GridView中Datalist中的Linkbutton

时间:2012-10-19 15:52:46

标签: vb.net gridview linkbutton nested-datalist

我有一个有趣的ASP / VB.NET问题。我有一个gridview,其中每一行在模板列中都有自己的datalist。我想在datalist中的每个项目中添加一个linkbutton,它将根据datalist中的数据触发事件。但我不知道该怎么做。它在一个项目中,因此它有设计器文件列出gridview但不列出gridview中的datalist。当我尝试添加它时,稍后在编译时删除datalist的列表。

我现在的问题是,我是否在gridview的datalist中获取了一些链接按钮来执行某些操作?

<asp:GridView ID="gvCmteNom" runat="server" AutoGenerateColumns="False" showheader="true" HeaderStyle-BackColor="Silver" Width="1600px">
<Columns>
<asp:TemplateField HeaderText="CURRENT SERVICE">
        <ItemTemplate>
            <asp:TextBox ID="txtID" runat="server" Text='<%# Bind("NOMINEE_ID") %>' Visible="False" Width="25px" />
            <asp:DataList ID="dlCurrentCmtes" runat="server" DataSourceID="dsCurrentCmte" RepeatLayout="Flow" DataKeyField="ID" RepeatDirection="Horizontal">
                <ItemTemplate>
                    <asp:HiddenField runat="server" ID="hdnUserID" Value='<%# Eval("ID") %>' />
                    <asp:Label ID="lblDescription" runat="server" Text='<%# Eval("Description") %>' />
                    <asp:LinkButton runat="server" ID="lbIncrementYear" CommandName="IncrementYear" CommandArgument='<%# Eval("ProductID") %>' Text="Add Year" />
                </ItemTemplate>
                <SeparatorTemplate><br /><br /></SeparatorTemplate>
            </asp:DataList>
            <asp:SqlDataSource ID="dsCurrentCmte" runat="server" 
                ConnectionString="" 
                ProviderName="System.Data.SqlClient" SelectCommand="spCmteList" SelectCommandType="StoredProcedure">
                <SelectParameters>
                    <asp:ControlParameter ControlID="txtID" Name="ID" PropertyName="Text" Type="String" DefaultValue="" />
                </SelectParameters>
            </asp:SqlDataSource>
        </ItemTemplate>
    </asp:TemplateField>
</Columns>

1 个答案:

答案 0 :(得分:1)

两个选项:

选项1 为DataList指定ItemCommand事件处理程序,并使用它来响应事件:

<asp:DataList OnItemCommand="Item_Command" />

然后在后面的代码中指定该函数:

Sub Item_Command(sender As Object, e As DataListCommandEventArgs) 
     If e.CommandName = "IncrementYear" Then
         ...
     End If
End Sub

选项2 为链接按钮指定OnClick事件处理程序

<asp:LinkButton OnClick="LinkButton_Click" runat="server"/>

然后

Sub LinkButton_Click(sender As Object, e As EventArgs) 
      ...
End Sub