我有使用TextBox Template字段和DropDownExtender的gridview,所以当用户点击文本框时,另一个gridview将显示包含项目列表和按钮以将项目添加到第一个gridview。我的问题是: 如果在按钮单击(在扩展程序gridview中)中获取第一个gridview的行索引(包含文本框),我该怎么办?
感谢
<cc1:DropDownExtender ID="uxItemExtender" runat="server" DropDownControlID="uxItemContainer" TargetControlID="uxItems"></cc1:DropDownExtender>
<asp:Panel BackColor="AliceBlue" ID="uxItemContainer" runat="server" ScrollBars="Both" Height="400" Width="200">
<asp:GridView ID="uxItemsView" runat="server" Font-Size="Small" AutoGenerateColumns="false" OnRowDataBound="uxItemsView_RowDataBound">
<Columns>
<asp:TemplateField HeaderText="Item Details">
<ItemTemplate>
<asp:Label ID="uxItemNameLbl" Text="Name :" runat="server"></asp:Label>
<asp:Label ID="uxItemName" runat="server"></asp:Label><br />
<asp:Label ID="uxItemDescriptionLbl" Text="Description :" runat="server"></asp:Label>
<asp:Label ID="uxItemDescription" runat="server"></asp:Label><br />
<asp:Label ID="uxItemPriceLbl" Text="Price :" runat="server"></asp:Label>
<asp:Label ID="uxItemPrice" runat="server"></asp:Label><br />
<asp:Button ID="uxSelectItem" runat="server" Text="Add Item" OnClick="uxSelectItem_Click" /><br />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Picture">
<ItemTemplate>
<asp:Image ID="uxItemImage" runat="server" Width="45" Height="50" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</asp:Panel>
</asp:TemplateField>
答案 0 :(得分:0)
我假设您需要行索引,以便您可以找到TextBox并更新它。
如果是这种情况,为什么不将内部GridView放在EditItemTemplate中呢?这样,您可以使用外部GridView的EditIndex属性来查找正确的行并更新TextBox。
或者,如果辅助GridView只是显示数据,请考虑使用ListBox - 这样,您将不会在另一个模板中,并且您可以只使用FindControl。
答案 1 :(得分:0)
您可以在gridview中设置button命令参数,如下所示:
<asp:Button ID="uxSelectItem" runat="server" Text="Add Item" OnClick="uxSelectItem_Click" CommandArgument="Row Index" /><br />
在OnClick事件中,您可以转发发件人并从按钮的命令参数中获取行索引,如下所示:
protected void uxSelectItem_Click(object sender, EventArgs e)
{
Button uxSelectItem = (Button)sender;
int RowIndex = int.Parse(uxSelectItem.CommandArgument);
}
所以你有行索引,按钮的OnClick事件被触发。
希望这有用....