C#Repeater动态按钮

时间:2014-01-21 17:50:51

标签: c# dynamic controls

我正在使用转发器来生成按钮控件。

<asp:Repeater ID="rptDoc" runat="server">
<ItemTemplate>
<div style="...">
<asp:Button ID="btnUpload" runat="server" Text="Button" OnClick="button_Click" />
</div>
</ItemTemplate>
</asp:Repeater>

例如,我可以生成4个按钮。但是,我该如何实施 每个按钮里面的程序?

单击btnUpload1时,会将文件上传到Folder1, 当点击btnUpload2时,它会将文件上传到Folder2

我知道有一种方法可以在Web表单中创建一个表,然后 动态地将生成的按钮放在表格单元格内......但是我 有很多具有样式的DIV,所以我不想使用表格 放置动态按钮。

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

它现在适用于我,我使用LinkBut​​ton而不是Button。 在转发器中还添加了OnItemCommand =“ItemCommand”。 最后,当LinkBut​​ton单击时,它将转到ItemCommand事件。 它从CommandArgument中获取值,该值在动态LinkBut​​ton中设置

<asp:Repeater ID="rpt" runat="server" OnItemCommand="ItemCommand">
<ItemTemplate>
<asp:LinkButton runat="server" CommandArgument='<%# Eval("lbtnUploadCommandArgument")%>' CommandName="ButtonEvent">Upload Files</asp:LinkButton>
</ItemTemplate>
</asp:Repeater>


protected void ItemCommand(Object Sender, RepeaterCommandEventArgs e)
{
string[] arr_Para = ((LinkButton)e.CommandSource).CommandArgument.Split(';');
}

答案 1 :(得分:0)

当您向Web表单动态添加按钮时,您可以跟踪每个按钮应该执行的操作,然后在常见的单击事件中处理该URL,如下面的hackish示例。

Dictionary<System.Web.UI.WebControls.Button, string> ButtonToURIMap = new Dictionary<System.Web.UI.WebControls.Button, string>();
private void AddButtonToForm()
{
    System.Web.UI.WebControls.Button myWebButton = new System.Web.UI.WebControls.Button();
    //Initialize/Style your button here.
    myWebButton.Click +=myWebButton_Click;
    ButtonToURIMap.Add(myWebButton, "http://www.google.com/");
}

void myWebButton_Click(object sender, EventArgs e)
{
    if (sender is System.Web.UI.WebControls.Button)
    {
        System.Web.UI.WebControls.Button callingButton = (System.Web.UI.WebControls.Button)sender;
        if ( ButtonToURIMap.ContainsKey(callingButton))
        {
            string uri = ButtonToURIMap[callingButton];
            //code you execute from here
        }
    }
}

答案 2 :(得分:0)

您需要的只是下面的内容。

代码隐藏中的

Protected Sub MyPointsRepeater_RowCommand(sender As Object, e As System.Web.UI.WebControls.RepeaterCommandEventArgs) Handles MyPointRepeater.ItemCommand
    arg = e.CommandArgument.ToString().Split(";"c)
End Sub
您的Aspx页面中的

<asp:Repeater ID="MyPointRepeater" runat="server">
<ItemTemplate>

<label class="ConferenceName"><%#Eval("Conference Name").ToString()%></label><br />
<label class="RegistrationId"><%#Eval("CPD Points / Hours").Tostring() %></label>
<label class="Type"><%#Eval("Type").ToString()%></label>

<asp:LinkButton ID="lnkCustomize" Text="Download Certificate"  CommandName="Customize" CssClass="fontLight"
                    CommandArgument='<%#Eval("R_Id").Tostring() + ";" + Eval("Conf_Id").Tostring() + ";" + Eval("Reg Id").Tostring() + ";" + Eval("CPD Points / Hours").Tostring() + ";" + Eval("Type").Tostring()%>'  runat="server" /> 

</ItemTemplate>
</asp:Repeater>