【问题标题】:Repeater Control disable a button中继器控制禁用按钮
【发布时间】:2018-08-12 14:04:09
【问题描述】:

我有一个中继器(名为 list_user),其中包含字段(id_usernamemail)和按钮 contact。我想执行一个控件,允许禁用某些用户名的联系按钮 这是我的代码

aspx:

   <asp:Repeater ID="list_user" runat="server" OnItemDataBound="list_user_ItemDataBound1">
          <HeaderTemplate>
              <table border="1" class="grid">
                  <thead>
                      <tr>
                          <th> Id user </th>  
                          <th> username </th>
                          <th> mail</th>
                          <th> Contact</th>                                                                    
                      </tr>
                  </thead>
                  <tbody>
                  </HeaderTemplate>
                  <ItemTemplate>
                 <tr>
                     <td><asp:Label runat="server" ID="id_user" Text='<%# Eval("iduser")%>'></asp:Label></td>    
                     <td><asp:Label runat="server" ID="username" Text='<%# Eval("name")%>' ></asp:Label></td> 
                     <td><asp:Label runat="server" ID="mail" Text='<%# Eval("mail_adress")%>'></asp:Label></td>                                                
                    <td><asp:Button runat="server" ID="contact" Text="contact_user" OnClick="contact_Click1"/></td>
                  </ItemTemplate>
                     <FooterTemplate>  
                      .....

c#中的代码隐藏

protected void list_user_ItemDataBound1(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {

        Label nom = (System.Web.UI.WebControls.Label)e.Item.FindControl("username") as System.Web.UI.WebControls.Label;
        System.Web.UI.WebControls.Button btn = (System.Web.UI.WebControls.Button)e.Item.FindControl("contact") as System.Web.UI.WebControls.Button;               
        if (nom.Text == "alex")
        { btn.Enabled = true; }
        else
        { btn.Enabled = false; }
    }

但显示屏没有任何反应

【问题讨论】:

  • 有什么问题...当我使用您的代码并使用您指定的属性获取用户类别时,您是否绑定了数据。所以它对我有用。它还禁用其他用户联系按钮,除了“亚历克斯”指定..

标签: c# asp.net repeater


【解决方案1】:

我使用了您上面的代码,它运行良好。您可能在 DataBind 上有问题。您正在寻找有效的数据绑定。我在 User 类中使用了您的属性并制作了用户列表,然后将其绑定到中继器控件,它工作正常。

aspx

<asp:Repeater ID="list_user" runat="server" OnItemDataBound="list_user_ItemDataBound1">
      <HeaderTemplate>
          <table border="1" class="grid">
              <thead>
                  <tr>
                      <th> Id user </th>  
                      <th> username </th>
                      <th> mail</th>
                      <th> Contact</th>                                                                    
                  </tr>
              </thead>
              <tbody>
              </HeaderTemplate>
              <ItemTemplate>
             <tr>
                 <td><asp:Label runat="server" ID="id_user" Text='<%# Eval("iduser")%>'></asp:Label></td>    
                 <td><asp:Label runat="server" ID="username" Text='<%# Eval("name")%>' ></asp:Label></td> 
                 <td><asp:Label runat="server" ID="mail" Text='<%# Eval("mail_adress")%>'></asp:Label></td>                                                
                <td><asp:Button runat="server" ID="contact" Text="contact_user" OnClick="contact_Click" /></td>
              </ItemTemplate>
    <FooterTemplate></FooterTemplate>
    </asp:Repeater>

代码文件

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    {
        List<User> list = new List<User>();
        User u = new User();
        u.iduser = 0;
        u.name = "alex";
        u.uContact = "555399";
        u.mail_adress = "fdsfsfdsddsff@gmail.com";
        list.Add(u);
        for (int i = 1; i < 5;i++ )
        {
            u = new User();
            u.iduser = i;
            u.name = "alex "+i;
            u.uContact = "555399";
            u.mail_adress = "fsddfsdsdf@gmail.com";
            list.Add(u);
        }

        list_user.DataSource = list;
        list_user.DataBind();
    }
}
class User
{
    public int iduser { get; set; }
    public string name { get; set; }
    public string mail_adress { get; set; }
    public string uContact { get; set; }
}
protected void list_user_ItemDataBound1(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {

        Label nom = (System.Web.UI.WebControls.Label)e.Item.FindControl("username") as System.Web.UI.WebControls.Label;
        System.Web.UI.WebControls.Button btn = (System.Web.UI.WebControls.Button)e.Item.FindControl("contact") as System.Web.UI.WebControls.Button;
        if (nom.Text == "alex")
        { btn.Enabled = true; }
        else
        { btn.Enabled = false; }

    }
}
protected void contact_Click(object sender, EventArgs e)
{
    //Add for click
}

输出结果

【讨论】:

  • 我把datasource和databind放在了页面的loading中,grid被数据库中的数据填满了但是只有list_user_ItemDataBound1没用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-23
  • 1970-01-01
相关资源
最近更新 更多