#c# #asp.net #webforms
#c# #asp.net #веб-формы
Вопрос:
Я пытаюсь выполнить одну операцию, поместив изображение в сетку. Здесь мне нужно взять идентификатор двух столбцов из сетки, один из которых является скрытым столбцом, а другой — обычным столбцом.
<asp:LinkButton ID="Budgetid" runat="server" CssClass="EditLink" CommandName="EDIT" TabIndex="6"
Text='<%#Eval("Budget_id") %>'></asp:LinkButton>
<asp:HiddenField ID="hf_Bgid" runat="server" Value='<%#Eval("Budget_id") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Row_Status" Visible="false" HeaderStyle-CssClass="grid_header_text">
<ItemStyle />
<ItemTemplate>
<asp:Label ID="lblRowStatus" runat="server" Visible="false" CssClass="OperationFont" Text='<%#Eval("Row_Status") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Budget code" SortExpression="Budget_Code" HeaderStyle-ForeColor="Wheat" HeaderStyle-CssClass="grid_header_text">
<ItemStyle Wrap="false" HorizontalAlign="center" />
<ItemTemplate>
<asp:Label ID="BCode" runat="server" CssClass="OperationFont" Text='<%#Eval("Budget_code") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
Я уже получил одно значение из сетки, используя
string strClid = ((HiddenField)row.FindControl("hf_Bgid")).Value.ToString();
Теперь мне нужно получить значение BCode в виде строки, подобной hf_bgid
.
Я пробовал так:
string strbudcode = ((TemplateField)row.FindControl("BCode")).Value.ToString();
string strbudcode = ((Label)gvBudget.FindControl("Budget_code")).Text;
но strbudcode
значение всегда становится нулевым.
Комментарии:
1. Управление с помощью, кажется, но вы используете его как .
id="BCode"
Label
TemplateField
Управление с помощью, кажется, a, но вы используете его как .id="Budget_code"
TemplateField
Label
Может быть, если вы исправите это и повторите попытку.2. значит, вместо строки я должен использовать это как метку??
Ответ №1:
Вам нужно найти значение в вашем событии RowDataBound, вы можете просто использовать метки для обоих, но пометить столбец visible =false, чтобы он не отображался на странице, но у вас будет доступ к нему из кода
if(e.Row.RowType == DataControlRowType.DataRow)
{
string strbudcode = ((Label)e.Row.FindControl("BCode")).Text;
}
Комментарии:
1. Затем просто установите visible=true в разметке HTML или в коде.