首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

GridView和DropDownList的有关问题。会的来看看啊(急救!)

2012-02-10 
GridView和DropDownList的问题。会的来看看啊。(急救!)GridView 进入编辑状态 的时候 编辑模板里有一个 下拉

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

热点排行