模板列里面的,dropdownlist事件,怎么取得当前的gridview行号或当前行主键值

解决方案 »

  1.   

    在模板列里,放一个 隐藏文本框<ItemTemplate>
    <!-- 这个 Input 用来保存主键 ,以方便在程序里查找 -->
    <input type="hidden" id="H_id" runat="server" value='<%#DataBinder.Eval(Container.DataItem,"id")%>'>
    <asp:DropDownList ID="DropDownListColor" Runat="server" autopostback="true"></asp:DropDownList>
    </ItemTemplate>// 动态查找模板列里的 DropDownListColor, 给 DropDownListColor 加上事件。
    // ...
    DropDownList ddlColor = (DropDownList)Repeater1.Items[i].FindControl("DropDownListColor");
    // ...
    if(ddlColor != null)
    {
    ddlColor.Visible = true;
    ddlColor.AutoPostBack = true;
    ddlColor.SelectedIndexChanged += new System.EventHandler(this.ddlColor_SelectedIndexChanged);
    }// DropDownListColor 的事件处理
    private void ddlColor_SelectedIndexChanged(object sender, System.EventArgs e)
    {
    DropDownList ddlColor = (DropDownList)sender;
    // 获取主键
    int id = 0; System.Web.UI.HtmlControls.HtmlInputHidden h_id
    = (System.Web.UI.HtmlControls.HtmlInputHidden)ddlColor.Parent.FindControl("H_id");
    if(h_id != null)
    {
    id = int.Parse(h_id.Value); // 得到主键值。
    }
    }
      

  2.   

    此外如果你一定要PostBack的话,DropList的SelectedIndexChange事件必须要放到ItemCreated方法里面生成,而不是ItemBound....