Make sure you are not re-loading the repeater in the page_load event,
this can disrupt the post back call. Remember that the page_load is
called every time the page is posted to.
Wrap anyy binding code in a !Page.IsPostBack (Not Page.IsPostBack in VB).
Here's an example of binding a dropdownlist in a repeater. The
DummyData routines are just for putting data on the form. The Html
follows...
public class RepeaterDropDown : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Repeater rpt;
private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
if (!Page.IsPostBack )
BindData();
}
private void BindData()
{
rpt.DataSource = DummyData();
rpt.DataBind();
}
private DataTable DummyListData()
{
DataTable dt = new DataTable();
dt.Columns.Add("DeptID");
dt.Columns.Add("Department");
DataRow dr = dt.NewRow();
dr["DeptID"] = 111;
dr["Department"] = "Finance";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["DeptID"] = 222;
dr["Department"] = "RD";
dt.Rows.Add(dr);
return dt;
}
private DataTable DummyData()
{
DataTable dt = new DataTable();
dt.Columns.Add("ID");
dt.Columns.Add("StaffMember");
dt.Columns.Add("Department");
DataRow dr = dt.NewRow();
dr["ID"] = 1;
dr["StaffMember"] = "Fred";
dr["Department"] = "Finance";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = 2;
dr["StaffMember"] = "Barney";
dr["Department"] = "RD";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = 3;
dr["StaffMember"] = "Wilma";
dr["Department"] = "Finance";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = 4;
dr["StaffMember"] = "Betty";
dr["Department"] = "RD";
dt.Rows.Add(dr);
return dt;
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web
Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.rpt.ItemCreated += new
System.Web.UI.WebControls.RepeaterItemEventHandler(this.rpt_ItemCreated);
this.rpt.ItemDataBound += new
System.Web.UI.WebControls.RepeaterItemEventHandler(this.rpt_ItemDataBound);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void rpt_ItemDataBound(object sender,
System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
DropDownList ddl;
Label l;
if (e.Item.ItemType == ListItemType.Item ||
e.Item.ItemType ==
ListItemType.AlternatingItem)
{
DataRowView drv = (DataRowView)e.Item.DataItem;
//fill dropdown
ddl = (DropDownList)e.Item.FindControl("ddl");
BindDropdown(ddl);
//set value
ddl.Items.FindByText(drv["department"].ToString()).Selected = true;
l = (Label)e.Item.FindControl("lbl");
l.Text = drv["StaffMember"].ToString();
}
}
private void BindDropdown(DropDownList ddl)
{
ddl.DataSource = DummyListData();
ddl.DataTextField="Department";
ddl.DataValueField = "DeptID";
ddl.DataBind();
}
private void rpt_ItemCreated(object sender,
System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
DropDownList ddl =
(DropDownList)e.Item.FindControl("ddl");
//set a handler
ddl.SelectedIndexChanged += new
System.EventHandler(this.ddl_SelectedIndexChanged);
}
private void ddl_SelectedIndexChanged(object sender,
System.EventArgs e)
{
DropDownList ddl = (DropDownList)sender;
Debug.WriteLine(ddl.SelectedItem.Text);
}
}
<%@ Page language="c#" Codebehind="RepeaterDropDown.aspx.cs"
AutoEventWireup="false" Inherits="CStuff.RepeaterDropDown" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>RepeaterDropDown</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET
7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema"
content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:Repeater id="rpt" runat="server">
<ItemTemplate>
<table>
<tr>
<td>
<asp:Label
ID="lbl" Runat="server" /></td>
<td>
<asp:DropDownList ID="ddl" Runat="server" AutoPostBack="True"/></td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
</form>
</body>
</HTML>
On 10/9/05, David Sapp <[EMAIL PROTECTED]> wrote:
> Hi,
>
> I'm have a repeater that has a dropdownlist inside of it. I know before the
> page loads that the dropdownlist will have 3 possible item selections but
> what I cannot figure out is when the user selects one of the 3 values is how
> to find out which value was selected. To be clear, there will be one
> dropdownlist for each row in the repeater. I have tried using javascript and
> also tried adding an eventhandler inside the ItemCreated event of the
> repeater but when I select a value in the dropdownlist (where i have
> autopostback=true set) the selectedItem eventhandler that I added does not
> fire.
>
> Thanks
>
> Dave
>
>
> ---------------------------------
> Yahoo! Music Unlimited - Access over 1 million songs. Try it free.
>
> [Non-text portions of this message have been removed]
>
>
>
>
>
>
>
> Yahoo! Groups Links
>
>
>
>
>
>
>
>
>
--
Dean Fiala
Very Practical Software, Inc
http://www.vpsw.com
------------------------ Yahoo! Groups Sponsor --------------------~-->
Most low income households are not online. Help bridge the digital divide today!
http://us.click.yahoo.com/cd_AJB/QnQLAA/TtwFAA/saFolB/TM
--------------------------------------------------------------------~->
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/AspNetAnyQuestionIsOk/
<*> To unsubscribe from this group, send an email to:
[EMAIL PROTECTED]
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/