我有个编辑列。。在点编辑的时候希望把模板列中的编缉项模板中的dropdownlist跟数据库字段绑定。。
我gridview是在后台页面加载时通过dataset绑定的
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowEditing="GridView1_RowEditing">
            <Columns>
                <asp:BoundField HeaderText="姓名" DataField="name" />
                <asp:BoundField HeaderText="年龄" DataField="age" />
                <asp:CommandField ShowEditButton="True" />
                <asp:TemplateField>
                    <EditItemTemplate>
                        <asp:DropDownList ID="DropDownList1" runat="server" DataTextField="name" DataValueField="age">
                        </asp:DropDownList>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%#Eval("name") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
前台代码是这样的绑定列和模板中的项模板的数据都已经绑定了。就是在点编辑后下拉列表里面没数据。。
不知道我说的清不清楚。。
希望大家教教我。。谢谢了。。

解决方案 »

  1.   

    没有看到关于DropDownList1数据源的代码啊
      

  2.   

    我在后台查询的,然后跟这个gridview绑定的。。
      

  3.   

    在后台的GridView1_RowEditing事件里通过FindControl找到选中行的DropDownList1,然后对其绑定
      

  4.   

    GridView1_RowEditing 做了什么没有?
      

  5.   

    感觉应该是这样:
    GridView  添加RowDataBound事件,
    在事件里判断当前行状态,如果是编辑状态
    找到DropDownList控件
        protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowIndex == this.GridViewData.EditIndex)
            {
                //e.Row.DataItem;            DropDownList drop = (DropDownList)e.Row.FindControl("DropDownList1");
                if (drop != null)
                {
                    ListItem li1 = new ListItem("北京", "1");
                    ListItem li2 = new ListItem("上海", "2");
                    drop.Items.Add(li1);
                    drop.Items.Add(li2);
                }
            }    }    如果想从数据源绑定DropDownList 的项,请用e.Row.DataItem,或自己根据当前的主键等写逻辑