【问题标题】:How to set value of dropdown list with a gridview boundfield如何使用gridview boundfield设置下拉列表的值
【发布时间】:2016-06-05 05:15:05
【问题描述】:

我正在尝试将 ListItem Yes 的值设置为 PointsPossible 数据字段。任何见解都会有所帮助。谢谢!

<asp:GridView ID="GridView1" runat="server" GridLines="None" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" CellPadding="10">
         <Columns>
             <asp:BoundField DataField="Question" ShowHeader="False" SortExpression="Question" />
              <asp:TemplateField>
                <ItemTemplate>
                    <asp:DropDownList ID="ddlOpt1" runat="server" ShowHeader="False" AutoPostBack="false" OnSelectedIndexChanged="ddlOpt_SelectedIndexChanged">
                        <asp:ListItem Value=""></asp:ListItem>
                        <asp:ListItem Value="0">No</asp:ListItem>
                        <asp:ListItem Value="???">Yes</asp:ListItem>
                    </asp:DropDownList>
                </ItemTemplate>
             </asp:TemplateField>
             <asp:BoundField DataField="PointsPossible" ItemStyle-HorizontalAlign="Center" HeaderText="Points Possible" ShowHeader="True" SortExpression="PointsPossible"  />
         </Columns>           
 </asp:GridView>

【问题讨论】:

    标签: c# sql asp.net gridview


    【解决方案1】:

    我能想到两种不同的方法:

    1. 处理gridview的OnRowDataBound事件,并对该事件内部的下拉列表进行数据绑定。 Here's 一步一步的文章
    2. 为下拉列表添加一个额外的SqlDataSource,并将下拉列表的DataSourceID 设置为SqlDataSourceHere's 一步一步的文章

    【讨论】:

    • 这帮助我找到了我正在寻找的东西。我想更改只有 1 个下拉列表项的 ValueField,上面的示例也更改了 TextField。我在下面发布了我的解决方案。感谢您的洞察力并引导我找到解决方案@Denis Wessels
    • 对于那些对您有帮助的解决方案,请点赞并标记为已回答
    • 我的代表太低,无法投票,但我让你回答了问题。没有意识到没有更高的代表我可以做到这一点。
    【解决方案2】:

    我目前正在使用的解决方案

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                var ddl = e.Row.FindControl("ddlOpt") as DropDownList;
                string val = e.Row.Cells[2].Text;
    
                if (ddl != null)
                {
                    Dictionary<string, string> list = new Dictionary<string, string>();
                    list.Add("", "");
                    list.Add("0", "No");
                    list.Add(val, "Yes");
    
                    ddl.DataSource = list;
                    ddl.DataTextField = "Value";
                    ddl.DataValueField = "Key";
                    ddl.DataBind();
    
                }
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-13
      • 1970-01-01
      • 1970-01-01
      • 2011-09-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多