Aritra Nath Ответов: 2

Как включить одно текстовое поле в gridview через событие RowCommand?


Всем привет,
Так вот в чем дело. У меня есть Gridview с полем, содержащим текстовое поле. У меня есть скрытые поля и текстовое поле отключено, что включено = false. В Gridview есть еще одно поле, содержащее LinkButton. При нажатии на кнопку linkbutton любой строки я хочу сделать столбец с текстовым полем видимым и включить только текстовое поле строки, из которой была нажата кнопка linkbutton. Я использовал приведенный ниже код. Он показывает столбец textbox, но все текстовые поля отключены. Пожалуйста помочь.

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "due_payment")
        {
            GridView1.Columns[8].Visible = true;

            int rowIndex = Convert.ToInt32(e.CommandArgument);
            TextBox txt =(TextBox)GridView1.Rows[rowIndex].FindControl("TextBox4");
            txt.Enabled = true;
        }
    }


Спасибо..

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

Вы проверили, что rowindex, который вы получаете, является правильным или нет ?
Пожалуйста, проверьте с помощью отладчика, получаете ли вы rowindex строки, из которой нажата кнопка link ?

Aritra Nath

Да, я правильно понимаю rowindex. Кроме того, текстовое поле обнаруживается правильно. Но она не становится поддержкой.

2 Ответов

Рейтинг:
2

jaswinder Singh03

Я думаю, что вы должны получить идентификатор выбранной строки в виде сетки, а затем, используя идентификатор этой строки, вы можете включить свое текстовое поле.Я надеюсь, что вы получаете командный аргумент этого типа в GridView

CommandArgument='<%# DataBinder.Eval(контейнер, "RowIndex") %>'

если не применять его.

Также проверьте еще раз свой идентификатор текстового поля, он должен быть таким же в представлении сетки.


}


Рейтинг:
0

Mohd Imran Saifi

проверить это. Я не знаю, что такое ваш HTML-код, поэтому я опубликовал этот рабочий пример в качестве вашего requiremnts.
Вам просто нужно привязать Gridview. и он будет работать как ваше требование
код Gridview.

<asp:GridView ID="GridView1" runat="server" GridLines="None"

         EmptyDataText="No Rcords Found" AutoGenerateColumns="False"

         onrowcommand="GridView1_RowCommand" onrowdatabound="GridView1_RowDataBound">
         <Columns>
             <asp:TemplateField>
                 <EditItemTemplate>
                     <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                 </EditItemTemplate>
                 <ItemTemplate>
                     <asp:LinkButton CommandArgument='<%# ((GridViewRow) Container).RowIndex %>' ID="LinkButton1" runat="server" CommandName="sel">Select</asp:LinkButton>
                 </ItemTemplate>
             </asp:TemplateField>
             <asp:TemplateField HeaderText="ID">
                 <EditItemTemplate>
                 </EditItemTemplate>
                 <ItemTemplate>
                     <asp:TextBox ID="TextBox2" runat="server" Text='<%#Eval("ID") %>' Enabled="false"></asp:TextBox>
                 </ItemTemplate>
             </asp:TemplateField>
             <asp:TemplateField HeaderText="name" Visible="false">
                 <EditItemTemplate>
                     <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                 </EditItemTemplate>
                 <ItemTemplate>
                     <asp:TextBox ID="TextBox1" runat="server" Text='<%#Eval("name") %>' Enabled="false"></asp:TextBox>
                 </ItemTemplate>
             </asp:TemplateField>
         </Columns>


и по команде строки

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
   {
       if (e.CommandName == "sel")
       {
           int rowIndex = Convert.ToInt32(e.CommandArgument);
           GridView1.Columns[2].Visible = true;
           TextBox txt = (TextBox)GridView1.Rows[rowIndex].FindControl("TextBox1");
           txt.Enabled = true;
       }
   }