2015-01-31 3 views
0

У меня есть динамически созданный DataTable для привязки GridView. У меня две кнопки, для их видимости установлено значение false. Я хочу, когда я добавлю новую строку при нажатии кнопки. Я хочу, чтобы одна из кнопок была установлена ​​visibility = true в этой новой строке, а другая - для просмотра visibility = false. Таким образом, кнопка должна быть видна только для строки, которую пользователь добавляет, не видимой во всех строках в DataTable. Вот мой код, я не знаю, как это исправить. Пожалуйста, помогитеДобавление кнопок в DataRow в DataTable

Markup:

<asp:GridView ID="GridView2" runat="server" OnRowDataBound="GridView2_RowDataBound"> 
     <Columns> 
    <asp:TemplateField> 
    <ItemTemplate> 

      <asp:Button ID="Button189" Visible="false" OnClick="Button189_Click" runat="server" Text="odzemi svez vrganj" /> 

      <asp:Button ID="btnTest" Visible="false" runat="server" CommandName="odzemi" CssClass="button2" OnClick="btnTest_Click" Text="-" Width="100px" Font-Bold="True" /> 

     </ItemTemplate> 
    </asp:TemplateField> 

      </Columns> 
        </asp:GridView> 

код позади:

protected void Button5_Click(object sender, EventArgs e) 
    { 
     MethodForAddFirstRow(); 
     //Here i need somehow to set bnTest to be visible only for this row,other button to stay invisible 
    } 
    protected void Button5_Click(object sender, EventArgs e) 
    { 
     MethodForAddSecondRow(); 
     //Here I need somehow to set Button189 to be visible only for this row,other button to stay invisible 
    } 
+0

Кто-то ..... ???? – buba

ответ

1

Для обработки событий кнопок внутри сетки, нужно использовать OnRowCommand поэтому вам необходимо обновить сетку чтобы быть следующим:

<asp:GridView ID="GridView2" runat="server" OnRowDataBound="GridView2_RowDataBound" onrowcommand="gv_RowCommand"> 

и убедитесь, что каждая кнопка имеет CommandName атрибут вроде следующего

<asp:Button ID="Button189" Visible="false" OnClick="Button189_Click" runat="server" Text="odzemi svez vrganj" CommandName="Command1" /> 

<asp:Button ID="btnTest" Visible="false" runat="server" CommandName="Command2" CssClass="button2" OnClick="btnTest_Click" Text="-" Width="100px" Font-Bold="True" /> 

затем создайте следующий обработчик событий внутри кода за

void gv_RowCommand(Object sender, GridViewCommandEventArgs e) 
    { 
    if(e.CommandName=="Command1") 
    { 
    } 
    else if(e.CommandName=="Command2") 
    { 
    } 
    } 

Для того, чтобы кнопки доступа внутри обработчика rowcommand события вы могут использовать следующие

GridView customersGridView = (GridView)e.CommandSource; 
GridViewRow row = customersGridView.Rows[index]; 
Button btn = (Button)row.FindControl("Button189"); 
btn.Visible=false; 
+0

@Hossem Button btn = (кнопка) e.Row.FindControl («Button189»); эта строка не работает: Ошибка Имя «строка» не существует в текущем контексте – buba

+0

@buba Я отредактировал свой ответ относительно этой части –

+0

@Hossem, но есть ли способ добиться этого из событий button_click? – buba

Смежные вопросы