【问题标题】:set an extra property for LinkButton in a repeater in ASP.NET在 ASP.NET 的中继器中为 LinkBut​​ton 设置一个额外的属性
【发布时间】:2014-10-07 07:43:12
【问题描述】:

我有一个中继器,里面有一个链接按钮。我想在链接按钮单击事件中获取一些数据。我应该如何设置我的额外数据并在点击事件中获取它们? (考虑我想连接我的财产中的一些项目)

aspx代码:

<asp:Repeater ID="rpSliderRest" runat="server">
    <ItemTemplate>
        <!-- ITEM-->
        <div class="span2">
            <div class="thumbnail product-item">
                <img src='<%#   Eval("PrintTemplate_URL").ToString().Replace("~", "../..") %>'>
            </div>
            <h6><%# Eval("PrintTemplate_Desc") %></h6>
            <asp:LinkButton ID="lbtn1" runat="server" class="btn btn-large btn-block" OnClick="LinkButton1_Click"
                Prperty='<%# string.Format("{0};{1}",Eval("PrintTemplate_URL").ToString(),Eval("PrintTemplate_ID").ToString()) %>'>Select »</asp:LinkButton>
        </div>
        <!-- ITEM-->
    </ItemTemplate>
</asp:Repeater>

aspx.cs 代码:

protected void LinkButton1_Click(object sender, EventArgs e)
{
    LinkButton lbtn = sender as LinkButton;
    string MyProperty=??????????
}

【问题讨论】:

    标签: c# asp.net data-binding webforms


    【解决方案1】:

    您可以使用Attributes 集合。

    例如:

    protected void LinkButton1_Click(object sender, EventArgs e)
    {
        LinkButton lbtn = sender as LinkButton;
        String MyProperty = lbtn.Attributes["PropertyName"];
    }
    

    【讨论】:

    • 感谢您的快速回复,它返回null!它甚至在渲染页面后都没有将我的属性添加到链接按钮(我在运行项目后在火错误中看到了它)
    • 链接按钮在运行后创建如下代码:&lt;a id="ctl00_ContentPlaceHolder1_RWPrintPreview_C_rpSliderActive_ctl01_lbtn1" class="btn btn-large btn-block" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$RWPrintPreview$C$rpSliderActive$ctl01$lbtn1','')"&gt;انتخاب »&lt;/a&gt;
    • 这很奇怪。我在一个简单的演示中对其进行了测试,它工作正常,服务器端代码和标记都包含自定义属性。一种想法是属性值包含破坏 HTML 的字符,FireBug 看不到该属性。而不是使用 FireBug 直接查看源并检查属性是否存在。
    • 我可以请你把你的演示发给我吗?我真的不明白问题出在哪里..,我会感谢你的:D
    • 这里是链接onedrive.live.com/…。我写了一些解释一些事情的cmets。希望这会有所帮助
    【解决方案2】:

    就我个人而言,我会沿着使用链接按钮 commandArgument 属性的路线 - 因为这就是它的用途。

    所以:

         <asp:LinkButton ID="lbtn1" runat="server" class="btn btn-large btn-block" OnClick="LinkButton1_Click"
                CommandArgument='<%# string.Format("{0};{1}",Eval("PrintTemplate_URL").ToString(),Eval("PrintTemplate_ID").ToString()) %>'>Select »</asp:LinkButton>
    

    然后

     protected void LinkButton1_Click(object sender, EventArgs e)
    {
        LinkButton lbtn = sender as LinkButton;
        string MyProperty= lbtn.CommandArgument;
     }
    

    【讨论】:

      猜你喜欢
      • 2011-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      • 1970-01-01
      相关资源
      最近更新 更多