none
如何给dropdownlist绑定数据更改选中项为绑定数据的 RRS feed

  • 问题

  • 我问的不是这种

     private void banding()
        {
            string a = Session["name"].ToString();
            DataTable dt = xx.BGetModelList(a);
            this.DataList2.DataSource = dt;
            this.DataList2.DataBind();
        }

    而是类似这种

    <asp:TextBox ID="email" runat="server" Text='<%# Eval("email") %>'></asp:TextBox>

    对datalist绑定数据,使里面的dropdownlist的默认选中项,为绑定数据里的值。

    如果实在不行,后台改的方法也可以求教,我对datatable datareader得到后的处理方式不懂得弄,比如对他们中的某项为1改成男为2改成女就做不出来。

    2017年12月10日 13:37

答案

  • 你好,

    据我所知,有两种方法可以选择。

    一种直接在前端绑定dropdownlist的selectvalue。

    类似于这样:

    SelectedValue='<%# Bind("CategoryID") %>'

    详细代码:

    <asp:GridView ID="GridView1" runat="server" Width="300px" AutoGenerateColumns="False" DataKeyNames="ProductID,CategoryID" DataSourceID="SqlDataSource1" OnRowDataBound="GridView1_RowDataBound">
          <Columns>
                <asp:BoundField DataField="ProductName" HeaderText="ProductName" SortExpression="ProductName" />
                <asp:TemplateField HeaderText="Category" SortExpression="CategoryID">
                    <ItemTemplate>
                        <asp:DropDownList DataSourceID="SqlDataSource4" ID="DdlCategories" DataTextField="CategoryName" DataValueField="CategoryID" runat="server" SelectedValue='<%# Bind("CategoryID") %>'></asp:DropDownList>
                        <asp:SqlDataSource ID="SqlDataSource4" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" SelectCommand="SELECT [CategoryID], [CategoryName] FROM [Categories]"></asp:SqlDataSource>
                    </ItemTemplate>
                </asp:TemplateField>
          </Columns>
    </asp:GridView>

    如果这个不能满足你的需求,你可以通过修改后台RowDataBound事件开绑定dropdownlist选中的值。

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if(e.Row.RowType== DataControlRowType.DataRow)
        {
            DataRowView drv = e.Row.DataItem as DataRowView;
            DropDownList ddlCategories = e.Row.FindControl("DdlCategories") as DropDownList;
            if(ddlCategories != null)
            {
                //Get the data from DB and bind the dropdownlist
                ddlCategories.SelectedValue = drv["CategoryID"].ToString();
            }
        }
    }


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已标记为答案 流星枪 2017年12月11日 5:02
    2017年12月11日 2:09