как получить идентификатор сетки в виде строки в c#

#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 или в коде.