c# - 如何在数据列表中获取链接按钮文本和值?

标签 c# asp.net datalist

我的项目中有一个 ajaxtabcontainer 控件,其中包含一个数据列表,在数据列表中,我已将名称设置为链接按钮。我绑定(bind)到源的数据列表包含姓名和年龄。现在我想像我们在下拉列表中使用的选定值一样使用年龄作为选定值吗?我想要的是单击名称链接按钮我在标签中获取它的值?怎么做?我所做的如下: 在默认 aspx 中:

<ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
    </ajaxToolkit:ToolkitScriptManager>
    <ajaxToolkit:TabContainer ID="TabContainer1" runat="server" ActiveTabIndex="1">
        <ajaxToolkit:TabPanel runat="server" HeaderText="TabPanel1" ID="TabPanel1">
            <HeaderTemplate>
               Names
            </HeaderTemplate>
         <ContentTemplate>
        <asp:DataList ID="DataList1" runat="server" RepeatDirection="Horizontal" RepeatColumns="5" ForeColor="Red"  
            RepeatLayout="Table" >

              <ItemTemplate>
              <asp:LinkButton Text = '<%#Eval("names")%>' ID="lnkpro" runat="server" ForeColor="Red" OnClick="btn_Click"></asp:LinkButton>
              </ItemTemplate>
            </asp:DataList>

        </ContentTemplate>

    </ajaxToolkit:TabContainer>

在CS代码中:

 protected void btn_Click(object sender, EventArgs e)
    {

        LinkButton myButton = sender as LinkButton;
        if (myButton != null)
        {
            Label1.Text = myButton.Text;
        }

    }
    protected void datalist1_ItemCommand(object source, DataListCommandEventArgs e)
    {
        int i;
        int index = Convert.ToInt32(e.Item.ItemIndex);
        LinkButton lnkid = (LinkButton)e.Item.FindControl("lnkpro");
        Label1.Text = lnkid.Text;
        i = Convert.ToInt32(lnkid.Text);
    }

但是他们不工作。 btn_click 正在工作,但只给出了唯一的名称而不是它的 id。第二个 datalist_item 命令不起作用?谢谢。

最佳答案

您在 aspx 页面中没有 OnItemCommand="datalist1_ItemCommand"。 datalist1_ItemCommand 应在您设置 OnItemCommand 属性后触发。

  <asp:DataList ID="DataList1" runat="server" RepeatDirection="Horizontal" RepeatColumns="5" ForeColor="Red"   OnItemCommand="datalist1_ItemCommand"
            RepeatLayout="Table" DataKeyField="age" >
              <ItemTemplate>                  
              <asp:LinkButton Text = '<%#Eval("names")%>' ID="lnkpro" runat="server" ForeColor="Red" OnClick="btn_Click"></asp:LinkButton>
              </ItemTemplate>
            </asp:DataList>

如果您试图在datalist1_itemCommand 函数中获取age 字段值,则需要设置DataKeyFeild="age"。在项目命令函数中,您可以执行 Convert.ToInt32(DataList1.DataKeys[e.Item.ItemIndex]) 来获取值。您的项目命令功能将是

   protected void datalist1_ItemCommand(object source, DataListCommandEventArgs e)
    {
        int age = Convert.ToInt32(DataList1.DataKeys[e.Item.ItemIndex]);
    }

关于c# - 如何在数据列表中获取链接按钮文本和值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20112879/

相关文章:

c# - 类似于 gmail 的 "Report a bug"功能的库

c# - 将值存储到列表框项 C#

jquery - 删除由 Asp :Datalist 生成的表的边框 ="0"内联属性

c# - 是否可以在 VisualStateManager 中修改静态资源?

c# - Winforms应用程序如何回调上一个窗体?

asp.net - 显示特定IP地址的死亡蓝屏(YSOD)

ASP.NET MVC SiteMap 和/或安全修整

asp.net - 如何在 ASP.NET GridView 中获取选中的项目

c# - 项目模板中的 <%# DataBinder.Eval(Container.DataItem ,"ColumnName") %> 究竟做了什么?

javascript - 验证数组中是否存在元素