【问题标题】:how to set dropdownlist selected value inside a Gridview?如何在 Gridview 中设置下拉列表选定值?
【发布时间】:2015-10-13 11:28:36
【问题描述】:

我在网格视图中有一个下拉列表。这是网格视图

<asp:GridView ID="gvFabricDetails" runat="server" AutoGenerateColumns="False" ShowFooter="True" CellPadding="4" ForeColor="#333333" GridLines="None" Width="49px" onrowdatabound="gvFabricDetails_RowDataBound" >
    <Columns>
        <asp:TemplateField HeaderText="Programme">
            <ItemTemplate>
                <asp:DropDownList ID="ddlProgramme" DataTextField="PROGRAMME_NAME" DataValueField="PROGRAMME_ID" SelectedValue='<%# Bind("PROGRAMME") %>' AppendDataBoundItems="true"  runat="server"></asp:DropDownList>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Lot/Style">
            <ItemTemplate>
                <asp:TextBox ID="txtLot" TabIndex="2" Text='<%# Bind("LOT_STYLE") %>' runat="server"></asp:TextBox>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Art#">
        <ItemTemplate>
            <asp:TextBox ID="txtArt" TabIndex="3" Text='<%# Bind("ART") %>' runat="server" ></asp:TextBox>
        </ItemTemplate>
    </asp:TemplateField>
</asp:GridView>

这是绑定数据的代码

public DataTable loadFabricInfos()
{
    DataTable dt = new DataTable();
    string sql = "";

    sql = "SELECT PROGRAMME,LOT_STYLE,ART FROM FABRICISSUE";

    OracleCommand objCommand = new OracleCommand(sql);
    OracleDataAdapter objDataAdapter = new OracleDataAdapter(objCommand);
    using (OracleConnection strConn = GetConnection())
    {
        try
        {
            objCommand.Connection = strConn;
            strConn.Open();
            objDataAdapter.Fill(dt);
        }

        catch (Exception ex)
        {
            throw new Exception("Error : " + ex.Message);
        }

        finally
        {
            strConn.Close();
        }
    }

    return dt;
}

现在的问题是 gridview 中的其他文本框正在获取数据。但下拉列表未与数据库数据绑定。 SelectedValue 属性给出的错误如下:

DataBinding: 'System.Data.DataRowView' does not contain a property with the name 'PROGRAMME'.

【问题讨论】:

  • 你在哪里绑定下拉列表?
  • 我已经在 Gridview_RowDataBound 事件中做到了
  • 你必须先绑定下拉列表数据源,然后才能设置选择值
  • 但是我没有任何数据源。我正在使用来自 sql 查询的数据表绑定下拉列表

标签: c# asp.net gridview dropdown


【解决方案1】:

更改此行 您的查询是 SELECT PROGRAMME,LOT_STYLE,ART FROM FABRICISSUE

你应该使用你的查询字段喜欢

DataTextField="LOT_STYLE" DataValueField ="PROGRAMME" SelectedValue='PROGRAMME") %>'

<asp:DropDownList ID="ddlProgramme" DataTextField="PROGRAMME_NAME" DataValueField="PROGRAMME" SelectedValue='<%# Bind("PROGRAMME") %>' AppendDataBoundItems="true"  runat="server"></asp:DropDownList>

【讨论】:

  • 您的解决方案看起来很完美。但是&lt;asp:DropDownList ID="ddlProgramme" DataTextField="PROGRAMME_NAME" DataValueField="PROGRAMME_ID" SelectedValue='&lt;%# Bind("PROGRAMME_ID") %&gt;' AppendDataBoundItems="true" runat="server"&gt;&lt;/asp:DropDownList&gt; 的简单方法是因为如果他更改数据值字段,他必须更改数据层或 Sp。如果 PROGRAMME_ID 是 value 字段,则让它保持不变,并且必须在 selectedvalue 区域中更改它。
  • 我已经尝试过那些..但它不起作用..还是谢谢
【解决方案2】:

您可以在后面的代码中将其绑定到 radgrid Itemdatabond 事件中:

private void RadGrid1_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e)
{
    if ((e.Item is GridDataItem)) {
        GridDataItem item = e.Item;
        DropDownList list = (DropDownList)item.FindControl("ddlProgramme");
        list.SelectedValue = DataBinder.Eval(item.DataItem, "<Datafield_name>").ToString();
    }
}

希望对您有所帮助...

【讨论】:

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