下拉列表值未显示

时间:2013-11-12 13:39:36

标签: c# asp.net gridview html-select

我有gridview,当选择一行时,它会填充到用于填充gridview本身的文本框中。最后一个字段是下拉列表,单击gridview时不显示。我设置了一个断点,看到它停留在第一个0指数上。我不知道为什么它没有前进...这是代码:

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
    ....

    if (DropDownListCurrency.Items.FindByValue(row.Cells[7].Text.ToString().Trim) != null)
    {
        DropDownListCurrency.SelectedValue = row.Cells[7].Text.ToString().Trim();
    }
    ....
}



<asp:DropDownList ID="DropDownListCurrency" runat="server" 
        CausesValidation="True"     
        DataSourceID="CurrencyDropDownListDataSource" 
        DataTextField="Currency" DataValueField="Currency_ID"
        AppendDataBoundItems="True">
    <asp:ListItem Value="0" Text="&lt;Select&gt;" Enabled="True" Selected="False"></asp:ListItem>
</asp:DropDownList>

4 个答案:

答案 0 :(得分:1)

为什么要从文本框中获取值。最好在事件中使用像这样的DataKeyNames

GridViewRow row = GridView.SelectedRow;

int id = Convert.ToInt32(GridView.DataKeys[row.RowIndex].Value);

这项工作如果您在DataKeyName中只有一个值,如果您看起来没有索引,如果您想要多个值使用此

int id = Convert.ToInt32(GridView.DataKeys[row.RowIndex].Values["FirstValue"]);

string name = Convert.ToString(GridView.DataKeys[row.RowIndex].Values["SecondValue"]);

答案 1 :(得分:0)

DropDownList是否包含您要显示的单词?

答案 2 :(得分:0)

您需要将AutoPostBack属性设置为True

它应该是:

<asp:DropDownList ID="DropDownListCurrency" AutoPostBack="True" runat="server" 
        CausesValidation="True"     
        DataSourceID="CurrencyDropDownListDataSource" 
        DataTextField="Currency" DataValueField="Currency_ID"
        AppendDataBoundItems="True">
    <asp:ListItem Value="0" Text="&lt;Select&gt;" Enabled="True" Selected="False"></asp:ListItem>
</asp:DropDownList>

答案 3 :(得分:0)

犯了一个简单的错误......

调用错误字段应该是值(Currency_ID)而不是文本(货币)

DropDownListCurrency.SelectedValue = GridView1.DataKeys[row.RowIndex].Values["Currency_ID"].ToString().Trim();