У меня есть Gridview с колонкой с DropDownList. Я связал этот Dropdownlist с событием на «SelectedIndexChanged». Проблема в том, что я не могу получить значение метки другого столбца в той же строке.Получить данные из строки выпадающего списка в Gridview
Код следующий:
protected void grid_OnSelectedIndexChanged(object sender, EventArgs e)
{
grdCredenciales.DataBind();
var dropdown = (DropDownList)sender;
var row = (GridViewRow)dropdown.NamingContainer;
var label = (Label)row.FindControl("lblMatricula");
var value = label.Text; // I get "" in this line.
}
И в сетке у меня есть:
<asp:ObjectDataSource ID="CredencialesDS" runat="server" />
<asp:GridView ID="grdCredenciales" runat="server" BackColor="White" DataSourceID="CredencialesDS"
CssClass="DDGridView" RowStyle-CssClass="td" HeaderStyle-CssClass="th" CellPadding="6" AllowSorting="True"
AllowPaging="True" AutoGenerateColumns="False" PageSize="10" OnRowDataBound="grdCredenciales_OnRowDataBound">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:Label ID="Label7" ToolTip="Matrícula" runat="server" Text="Matrícula"/>
</HeaderTemplate>
<HeaderStyle HorizontalAlign="Left" Width="15%"/>
<ItemStyle HorizontalAlign="Left" />
<ItemTemplate>
<asp:Label ID="lblMatricula" runat="server"><%# Eval("Matricula") %></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
<asp:Label ID="Label19" ToolTip="Estado" runat="server" Text="Estado" />
</HeaderTemplate>
<HeaderStyle HorizontalAlign="Left" Width="15%"/>
<ItemStyle HorizontalAlign="Left" />
<ItemTemplate>
<asp:DropDownList runat="server" ID="dpEstadoCredencial" AutoPostBack="True" OnSelectedIndexChanged="grid_OnSelectedIndexChanged" CssClass="comboEstado"/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Я не знаю, почему, но label.text возвращает пустую строку. Как вы можете видеть, я вызываю DataBind раньше, поэтому метка должна иметь значение в этот момент.
Вы знаете, как я могу получить значение, которое мне нужно, от метки в другом столбце?
Спасибо всем.
Можете ли вы показать свое определение сетки? Кроме того, попробуйте label.Name, он будет содержать значение, если метка отображается и не определена, сообщите мне, работает ли она для вас, и я составу полный ответ. –
Я добавил код aspx. Проверьте это! –
О, спасибо за помощь. PD: Лейбл не имеет свойства «Имя». –