GridView和DropDownList的问题。会的来看看啊。(急救!)
GridView 进入编辑状态 的时候 编辑模板里有一个 下拉列表框
C# code
<asp:TemplateField HeaderText="类别">
<EditItemTemplate>
<asp:DropDownList ID="Class1" Width="60px" runat="server">
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label4" Width=80px runat="server" Text='<%# Bind("ClassName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
更新的时候在根据选择的 DataValueField 进行操作
现在想完成 进入编辑状态的时候 根据原来数据库的值 预先选择好 SelectedIndex
看了一些资料。
现在后台代码如下。
C# code
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
GridView1.DataSourceID = SqlDataSource1.ID;
GridView1.DataBind();
DropDownList dl = (DropDownList)GridView1.Rows[e.NewEditIndex].FindControl("Class1");
string Cid = GridView1.DataKeys[e.NewEditIndex].Values[1].ToString();
dl.DataSourceID = SqlDataSource2.ID;
dl.DataTextField = "Name";
dl.DataValueField = "Id";
dl.DataBind();
ListItem list = dl.Items.FindByValue(Cid);
list.Selected = true;
int i = dl.SelectedIndex;
}
调试的时候已经可以看到 dl.SelectedIndex 有值了。
但是在页面上点击 下拉列表框的时候 出现很长列表。但是里边什么都没有。如图:
有没有知道的 ,给解答下。。。很费解。。。。头都大了。
------解决方案--------------------放到
if (!IsPostBack)
{
...
}
------解决方案-------------------- 在Page_Load加
if (!IsPostBack)
{
GridView1.EditIndex = e.NewEditIndex;
GridView1.DataSourceID = SqlDataSource1.ID;
GridView1.DataBind();
DropDownList dl = (DropDownList)GridView1.Rows[e.NewEditIndex].FindControl("Class1");
string Cid = GridView1.DataKeys[e.NewEditIndex].Values[1].ToString();
dl.DataSourceID = SqlDataSource2.ID;
dl.DataTextField = "Name";
dl.DataValueField = "Id";
dl.DataBind();
ListItem list = dl.Items.FindByValue(Cid);
list.Selected = true;
int i = dl.SelectedIndex;
}
------解决方案-------------------- DropDownList dl = (DropDownList)GridView1.Rows[e.NewEditIndex].FindControl("Class1");
string Cid = GridView1.DataKeys[e.NewEditIndex].Values[1].ToString();
dl.DataSourceID = SqlDataSource2.ID;
dl.DataTextField = "Name";
dl.DataValueField = "Id";
dl.DataBind();
把对下拉列表框的绑定放在RowDataBound事件中
------解决方案--------------------看这个:
http://blog.csdn.net/insus/archive/2008/03/26/2221260.aspx