Как связать данные с кнопкой ссылки, не мешая другим полям?
На странице есть несколько видов сетки. Первый gridview редактируемый, второй нет. Первый вид сетки имеет столбец с гиперссылкой (кнопка ссылки). Вторая таблица должна быть загружена на основе события клика по гиперссылке выше. Это все равно что ожидать, что гиперссылка будет вести себя как кнопка. Можно ли это сделать?
Чтобы даже попробовать, я не уверен, с чего начать. Я добавил гиперссылку на первый столбец сетки. Но то, что установить для NavigationURL, для меня сомнительно.
В элементе управления гиперссылкой есть только несколько событий.
Кажется, ничего из этого не делает то, что мне нужно. Любой учебник является ценным.
Обновление: код разметки Gird
<div id="schedule">
<asp:GridView ID="gvSchedule"
runat="server" AutoGenerateColumns="false"
CssClass="Grid"
DataKeyNames="Employee ID, WOY, Location"
ShowHeader="false"
RowStyle-CssClass="rowstyle"
onrowdatabound="gvSchedule_RowDataBound">
<Columns>
<asp:BoundField HeaderText="Staff"
DataField="E_Name" SortExpression="E_Name"
ItemStyle-Width="113" />
</Columns>
</asp:GridView>
<br />
</div>
Пробовал кнопку ссылки согласно этому решению здесь
<asp:TemplateField HeaderText="StaffClick" SortExpression="STOCK NO" ItemStyle-Width="50">
<ItemTemplate>
<asp:LinkButton ID="lblStaff" runat="server">Click</asp:LinkButton>
</ItemTemplate>
<HeaderStyle BackColor="Black" ForeColor="White" HorizontalAlign="Left"/>
<ItemStyle HorizontalAlign="Left" />
</asp:TemplateField>
После использования этого кода теперь ни одно из полей с флажками не загружается с событием связанной строки.
1 ответ
Поместите LinkButton в ваш GridView и используйте действие "RowCommand", чтобы установить, что должно произойти. Как только ссылка нажата, отправляется Событие с именем RowCommand. Вы можете обрабатывать все, что нужно, на стороне сервера.
CommandArgument может быть чем угодно, что вы хотите передать функции на стороне сервера.
Вот пример:
<asp:Button ID="btnViewmore"
CommandArgument="<%# ((GridViewRow) Container).RowIndex %>
" CommandName="More" runat="server" Text="View More" />
И на стороне сервера вы можете сделать это (C#):
protected void gridMembersList_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "More")
{
int index = Convert.ToInt32(e.CommandArgument.ToString());
// do something with your command and commandargument, like for instance, update the second gridview
}
}