我正在使用转发器来生成按钮控件。
<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,所以我不想使用表格 放置动态按钮。
感谢您的帮助。
答案 0 :(得分:1)
它现在适用于我,我使用LinkButton而不是Button。 在转发器中还添加了OnItemCommand =“ItemCommand”。 最后,当LinkButton单击时,它将转到ItemCommand事件。 它从CommandArgument中获取值,该值在动态LinkButton中设置
<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>