2012-06-28 13 views
2

如何访问asp中继器中的特定行并禁用其中的按钮?该程序禁用所有向下按钮。我想检查userId是否存在于数据库中,它应该禁用向上按钮,只有向下按钮应该被启用。禁用中继器中的按钮

public void Repeater1_ItemDatabound(Object Sender, RepeaterItemEventArgs e) 
    { 

     if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
     { 
      String userID = User.Identity.Name.Split('\\')[1]; 
      if (isOwner(userID) == true) 
      { 

       Button b = e.Item.FindControl("btnmoveup") as Button; 
        b.Enabled = false; 


      } 

public bool isOwner(string user_ID) 
    { 
     using (SqlConnection connection = new SqlConnection(WebConfigurationManager.ConnectionStrings["ctd_priority_dbConnectionString"].ConnectionString)) 
     { 
      connection.Open(); 
      SqlCommand cmd = new SqlCommand("Select POwner from Projects WHERE POwner = @userid", connection); 
      cmd.Parameters.AddWithValue("@userid", user_ID); 
      SqlDataReader reader = cmd.ExecuteReader(); 

      if (reader.HasRows) 
      { 

       return true; 
      } 
      else 
      { 
       return false; 
      } 
      connection.Close(); 
     } 
    } 
+0

这看起来不错,虽然每个项目isOwner方法查询代表他们的不良做法。 – Candide

+0

你的程序会发生什么?有些错误?你有没有试过JQuery? –

+0

http://tinypic.com/r/1793pk/6这就是我想要的...所有的按钮都在右侧启用...我只想让旁边的按钮被启用 – Pradit

回答

0

不是直接回答你的问题。我已经用了启用,可见,和其他属性

但是一个技术是该值拉进你使用,以填补查询你的中继器。例如,您的查询/存储过程可能会返回一个名为'is_enabled'的列,其值为1或0。然后,你的按钮的.enabled属性可以设置这样的:.enabled = '<%# eval(is_enabled) %>'

希望帮助

+0

http://tinypic.com/r/1793pk/6 我只是一个初学者和没有太多关于它的想法 我可以使用我的用户ID访问行,只是禁用按钮?如果(isOwner(userID)== true) { Button b = e.Item.FindControl(“btnmoveup”)as Button; b.Enabled = false; } – Pradit

+0

现在,您正在运行两个查询。首先,你正在填充你的中继器。其次,你正在遍历你的中继器,并运行一个查询来确定POwner(对于每个中继器行一遍又一遍)。而不是那么做,为什么不尝试在你的第一个查询中确定POwner - 最初填充你的中继器的那个?那有意义吗?除此之外,我的答案中的代码将直接添加到您的标记 - 大概,你有一些标记为您的中继器,包括一个asp:按钮... – Chains

+0

我明白你说什么,但我不认为我可以实现这个..自从我开始asp.net以来只有一个月......在遍历Powner的行时,我可以找出它匹配的行的索引吗? – Pradit