2013-11-12 4 views
0

hi У меня есть 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> 

ответ

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"]); 
+0

попытался это получить для отображения, когда нажата строка fromt eh gridview, но я думаю, что im делает что-то не так в объявлении: DropDownListCurrency.SelectedValue = GridView1.DataKeys [row.RowIndex] .Values ​​["Currency"]. ToString(); – New2This

+0

Привет, попробуйте использовать обрезку, возможно, одно значение имеет пробелы, возможно, не соответствует – Ryuzaki

+0

исключение, которое его бросает: «DropDownListCurrency» имеет значение SelectedValue, которое недействительно, потому что оно не существует в списке элементов. Имя параметра: значение – New2This

0

Включает ли DropDownList слова, которые вы хотите отобразить?

+0

да, его вытягивают из таблицы, на которую ссылается источник данных. на самом деле он говорит, что оператор IF имеет некоторые недопустимые аргументы. есть ли лучший способ написать это? – New2This

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> 
0

сделал простую ошибку ...

назвал неправильное поле должно было быть значение (Currency_ID), а не текст (Валюта)

DropDownListCurrency.SelectedValue = GridView1.DataKeys[row.RowIndex].Values["Currency_ID"].ToString().Trim(); 
Смежные вопросы