标题:一个gridview的DropDownList绑定问题!!!
只看楼主
fsx
Rank: 1
来 自:广西南宁
等 级:新手上路
帖 子:278
专家分:0
注 册:2005-11-9
结帖率:100%
 问题点数:0 回复次数:6 
一个gridview的DropDownList绑定问题!!!
我在gridview的编辑模板中放了一个DropDownList控件,控件是绑定数据库中的数据,当点击编辑铵钮时显示dropdownlist。数据绑定是实现了,可是在点击gridview中编辑按钮时dropdownlist中默认选中的不是该列的值。在更新时也得不到dropdownlist的selectedvalue值。不知为何,请各位帮看看,谢谢了~
代码如下:
<asp:GridView ID="gridMember" runat="server" AllowSorting="True" AutoGenerateColumns="False" Width="75%" DataKeyNames="proID" AllowPaging="True" OnPageIndexChanging="gridMember_PageIndexChanging" OnRowDataBound="gridMember_RowDataBound" OnRowEditing="gridMember_RowEditing" OnRowUpdating="gridMember_RowUpdating" OnRowCancelingEdit="gridMember_RowCancelingEdit">
                    <Columns>
                     <asp:TemplateField HeaderText="产品品牌">
                     <ItemTemplate><%#Eval("brandN")%></ItemTemplate>
                     <EditItemTemplate>
                     <asp:HiddenField runat="server" ID="hidtxt" Value='<%#Eval("brandN")%>' />
                   <asp:DropDownList runat="server" id="drop"></asp:DropDownList>
                     </EditItemTemplate>
                     </asp:TemplateField>
</Columns></asp:GridView>

后台代码:
protected void gridMember_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        string str = "select * from brands";
        DataSet dss = new DataSet();
        dss = dataFactory.ds(str, dss, "tb");
        if (((DropDownList)e.Row.FindControl("drop")) != null)
        {
            DropDownList drp = (DropDownList)e.Row.FindControl("drop");

            //  生成 DropDownList 的值,也可以取得数据库中的数据绑定
            drp.DataSource = dss.Tables["tb"];
            drp.DataTextField = "brand";
            drp.DataValueField = "brandID";
            drp.DataBind();
            //  选中 DropDownList
            drp.SelectedValue = ((HiddenField)e.Row.FindControl("hidtxt")).Value.ToString();
            //
        }
    }
更新代码:
protected void gridMember_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        string drp = ((DropDownList)gridMember.Rows[e.RowIndex].FindControl("drop")).SelectedValue;
        string str = "update proType set brand=@a1 where proID="+gridMember.DataKeys[e.RowIndex].Value+"";
        OleDbCommand cmd = new OleDbCommand(str,conn.connData());
        cmd.Parameters.Add("a1", OleDbType.Integer).Value = drp;
        conn.Open();
        cmd.ExecuteNonQuery();
        conn.Close();
        gridMember.EditIndex = -1;
        Init();
    }
搜索更多相关主题的帖子: quot 绑定 gridview DropDownList 数据库 
2008-01-08 22:06
c_henry
Rank: 1
等 级:新手上路
帖 子:129
专家分:0
注 册:2005-7-11
得分:0 
如果实在得不到值的话尝试使用javascript将select的值绑定到一个服务器端控件上,
给dropdownlist加onchange,比如每次改变将值存到一个textbox中,你在后台不去读select,而去读textbox

2008-01-08 22:40
guming
Rank: 4
等 级:业余侠客
威 望:5
帖 子:329
专家分:277
注 册:2006-11-9
得分:0 
“可是在点击gridview中编辑按钮时dropdownlist中默认选中的不是该列的值”??那它绑定到的值是什么呢,还是说下拉表为空?

不想停留。。。
2008-01-09 16:15
fsx
Rank: 1
来 自:广西南宁
等 级:新手上路
帖 子:278
专家分:0
注 册:2005-11-9
得分:0 
下拉列表有值,绑定的是数据库中的值,也就是gridview该列的值。下拉列表是放在编辑模板中的,当点击编辑时显示下拉列表。可是显示时默认不能选中值,而是选中第一项,更新时也获取不了下拉列表的值。这是怎么回事呢~!

做你喜欢做的事
2008-01-10 01:11
zsf2006
Rank: 1
来 自:博客园
等 级:新手上路
威 望:1
帖 子:315
专家分:0
注 册:2006-6-3
得分:0 
//  选中 DropDownList
    drp.SelectedValue = ((HiddenField)e.Row.FindControl("hidtxt")).Value.ToString();
 //
改为:

 //  选中 DropDownList
for(i=0;i<drop.Items.Count;i++)
{
    if(drop.Items[i].Value==((HiddenField)e.Row.FindControl("hidtxt")).Value.ToString())
    drop.SelectedIndex=i;
}
 //

以上只供参考

[[italic] 本帖最后由 zsf2006 于 2008-1-11 17:25 编辑 [/italic]]

光临我的博客:http://
2008-01-11 17:23
191638141
Rank: 1
等 级:新手上路
帖 子:112
专家分:0
注 册:2008-1-5
得分:0 
绑定到Dropdown上应该用视图模式
drp.DataSource = dss.Tables["tb"].DefaultView;
2008-01-12 20:50
fsx
Rank: 1
来 自:广西南宁
等 级:新手上路
帖 子:278
专家分:0
注 册:2005-11-9
得分:0 
非常感谢各位的解答,问题已基本得以解决~

做你喜欢做的事
2008-02-02 11:46



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-196574-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.107520 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved