GridView和DropDownList的有关问题。会的来看看啊(急救!)
GridView和DropDownList的问题。会的来看看啊。(急救!)
GridView 进入编辑状态 的时候 编辑模板里有一个 下拉列表框
更新的时候在根据选择的 DataValueField 进行操作
现在想完成 进入编辑状态的时候 根据原来数据库的值 预先选择好 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
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