<asp:Repeater ID="Repeater1" runat="server">
            <ItemTemplate>
            <asp:TextBox ID="TextBox1"  runat="server" Text='<%# Eval("sd_id")%>' Visible="False"></asp:TextBox>
        <asp:Button ID="Button1"  onclick="Button1_Click" runat="server" Text="点这里" /></div>
            </ItemTemplate>
        </asp:Repeater>//这是前端的代码
//下面是cs里面的代码                foreach (RepeaterItem item in RepeaterItem.Items)
                {
                    Button Button1 = item.FindControl("Button1") as Button;                    if (Button1 != null)
                    {
                        Button1.Enabled = false;
                        ((Button)sender).Text = "OK,已经点过了";
                    }
                }
我的意思就是在关面列出来的数据后面都有一个按钮,点一下之后刷新页面已经点过的就变成灰色不能点了,请问该怎么做啊,
多谢高手指教!!

解决方案 »

  1.   

    对了,补充一下,点了之后sd_id的值变为2,
    那么sd_id的值为2的按钮就为灰的,,谢谢了补充了问题加了20分,请高手笑纳!
      

  2.   

    在Button1的Click下:
        protected void Button1_Click(object sender,EventArgs e)
        {
            ((Button)sender).Enabled = false;
            ((Button)sender).Text = "OK,已经点过了";    }
      

  3.   

    设置这个按钮的enable属性为 false 
      

  4.   

    Button1_Click中
    Button btn=sender as Button;
    btn.Enabled = false;
    RepeaterItem item =btn.NamingContainer as RepeaterItem;  
      

  5.   

    补充题:
        protected void Button1_Click(object sender,EventArgs e)
        {
            ((Button)sender).Enabled = false;
            ((Button)sender).Text = "OK,已经点过了";        int index = ((RepeaterItem)((Button)sender).NamingContainer).ItemIndex;
            TextBox t1 = (TextBox)Repeater1.Items[index].FindControl("TextBox1");
            t1.Text = "2";
        }
      

  6.   

    各位大哥,我是想点了之后刷新页面在Page_Load里面也显示为灰色..
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                     ....数据库操作..                  if (si_id== 2)
                    {
                        ((Button)sender).Enabled = false;
                        ((Button)sender).Text = "已经点过了";
                    }
                 }
            }
    但是这样做一直显示((Button)sender).Enabled = false;这一句"用户代码未处理"{"无法将类型为“ASP.manager_ydpayback_aspx”的对象强制转换为类型“System.Web.UI.WebControls.Button”。"}..
      

  7.   

    在page_load中就要设置??
    这时数据还没绑定呢!!所以是不行的!
    还有你si_id是数据库字段绑定了TextBox1,如果它的值在数据表中是2的话,
    在Repeater的ItemDataBound中进行,如:
        protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                TextBox t1 = (TextBox)e.Item.FindControl("TextBox1");
                if (t1.Text == "2")
                {
                    Button b1 = (Button)e.Item.FindControl("Button1");
                    b1.Enabled = false;
                    b1.Text = "OK,已经点过了";
                }
            }
        }
      

  8.   

    把 si_id用cookie保存起来,在刷新的时候判断cookie里面的值是否为2.设置按钮 不可能
      

  9.   

    希望可以帮助你.记得恢复我哦..
     <asp:Button ID="btedit"  runat="server" CommandName='btedit' CommandArgument=' <%# Eval("ID")%>'  ForeColor="Red" Font-Underline="true">
    ItemCommand事件里.判断,e.CommandName是否等于你按钮的CommandName
    假如等于
     Button bt = (Button)e.Item.FindControl("btedit");
    设置它的属性为enable
    \重新绑定
      

  10.   

    protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                     ....数据库操作..                  if (si_id== 2)
                    {
                        ((Button)sender).Enabled = false;
                        ((Button)sender).Text = "已经点过了";
                    }
                 }
            }
    sender是不能转为Button的,9楼的方法应该是对的,可以试一下。
      

  11.   

    恩,,,我在公司,网速比较慢,写下你试下...
     <asp:Button ID="Button1"  onclick="Button1_Click" CommandName='btedit'  runat="server" Text="点这里" /></div>后台
     protected void repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
    {
      if(e.CommandName=="btedit")
      {
        //更新sd_id为2
         Button bt = (Button)e.Item.FindControl("btedit");
            //重新绑定repeater     
      }
     protected void repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
    {
      TextBox tb=(TextBox)e.Item.FindControl("TextBox1");
    Button bt = (Button)e.Item.FindControl("btedit");
      if(tb.Text=="2")
       {
       bt.enalble=false;
       }
    }
    }不习惯在这里写编码////..你试验下把...
      

  12.   

    补充:
    ///比较乱,,上面的repeaterItemCommand事件里,,,执行数据库更新操作..
    绑定事件里,,根据ID是不是2,,来判断按钮是不是ENABLE