我需要在转发器内创建一系列动态创建的按钮。这些按钮名称来自数据库。当用户单击按钮时,名称旁边会显示一些隐藏文本。再次点击时消失。该文本必须在html或后面的代码中定义。
这是一些代码来展示我的想法。
<asp:Repeater ID="Repeater1" DataSourceID="DecisionDetailsDS" runat="server" >
<ItemTemplate>
<asp:Button ID="DecisionButton" runat="server" OnClick="BTN_ShowText" BorderStyle="None"
Text='<%# Eval("Decision_Type_Dsc") %>' />
<asp:Label ID="DecisionLabel" Visible="false" runat="server" />
<p></p>
</ItemTemplate>
<AlternatingItemTemplate>
<asp:Button ID="DecisionButton" runat="server" OnClick="BTN_ShowText" BorderStyle="None"
Text='<%# Eval("Decision_Type_Dsc") %>' />
<asp:Label ID="DecisionLabel" Visible="false" runat="server" /> <p></p>
</AlternatingItemTemplate>
</asp:Repeater>
public void BTN_ShowText(Object sender, EventArgs e)
{
Label TestLabel = (Label)FindControl("DecisionLabel");
Button TestButton = (Button)FindControl("DecisionButton");
switch(TestButton.Text)
{
case "Dismissed":
TestLabel.Text = "Testing 1 2 3";
break;
case "Anything":
TestLabel.Text = "Testing 2 3 4";
break;
}
if (TestLabel.Visible == false)
{
TestLabel.Visible = true;
}
else
{
TestLabel.Visible = false;
}
}
}
我知道这不起作用。我得到nulls返回。而我需要按钮的ID和它的相应标签。希望这可以让您了解我正在尝试做什么。如果您提供我的一些代码,特别感谢您的建议。我想也许可以使用jquery?
我是.net / jquery编程新手。希望有人可以帮助我。 谢谢!
答案 0 :(得分:1)
FindControl是一种可以在任何控件或Page对象上执行的方法。但是,它不是递归查找 - 也就是说,如果您在Page对象上调用它,它将不会在任何子控件中查找ID。
尝试在BTN_ShowText方法中执行此操作:
Button clickedButton = sender as Button;
Label TestLabel = (Label)clickedButton.Parent.FindControl("DecisionLabel"));
Button TestButton = (Button)clickedButton.Parent.FindControl("DecisionButton");
Parent对象将是单击按钮的转发器的ItemTemplate实例,因此它应该包含您要查找的控件。
答案 1 :(得分:0)
<asp:Repeater ID="Repeater1" DataSourceID="DecisionDetailsDS" runat="server" OnItemDataBound="Repeater1_DataBound">
<ItemTemplate>
<asp:Button ID="DecisionButton" runat="server" OnClick="BTN_ShowText" BorderStyle="None" />
<asp:Label ID="DecisionLabel" Visible="false" runat="server" />
</ItemTemplate>
</asp:Repeater>
然后在你的代码中
protected void Repeater1_DataBound(object sender, RepeaterItemEventArgs e)
{
(e.Item.FindControl("DecisionButton") as Button).Text
= Convert.ToString(e.DataItem["Decision_Type_Dsc"]);
}
并且您的按钮事件可以执行以下操作:
public void BTN_ShowText(Object sender, EventArgs e)
{
(sender as Button).Text;
}
这应该让你开始。