2016-10-18 17 views
0

私はasp net webフォームを持っていますが、asp net listviewの特定の行のボタンを無効にする必要があります。私はボタンを無効にする必要がありますリストビューの行の列にStatus = "Reject"(この行のみ、すべてのリストビューではない)
私はコードビハインドからそれを見つける方法とaspxページでそれを無効にする方法を理解するが、私はドン特定の行のためにそれを無効にする方法を理解していません。
どのようにリストビューの特定の行の編集ボタンを無効にすることはできますか?
私のコードと私は以下試してみました:リストビュー内の特定の行の編集ボタンを無効にする方法

 <asp:ListView ID="ListView2" ItemType="DocCat.Models.Inf" DataKeyNames="Id" EnableViewState="false" runat="server" OnItemDataBound="ListView2_ItemDataBound" > 
     <LayoutTemplate> 
      <div class="outerContainer"> 
       <table id="docTable"> 
        <thead> 
        <tr> 
        <th>ID</th><th>Name</th> 
<th>Status</th></tr> 
         </thead> <tbody runat="server" id="itemPlaceholder"></tbody></table> </div> </LayoutTemplate> 
<ItemTemplate ><tr> <td><%# Item.ID %></td> <td><%# Item.F2 %></td> 
     <td><%# Item.Status %></td> 
       <td> 
        <asp:Button ID="YesBtn" runat="server" Text="Bla" CommandName="Update" Onclick="YesBtn_Click" /> </td> 
       <td><asp:Button ID="NoBtn" runat="server" Text="Bla" CommandName="Update" Onclick="NoBtn_Click" /> 
        </td></tr> </ItemTemplate></asp:ListView> 

私はこのようにそれを作ってみました:

`<asp:Button ID="YesBtn" Visible='<%# (Eval("ReqStatus") == "Reject")?true:false %> ' ... /> 

私はこの状況
を持っているのすべてのリストビューでこの無効ボタンと私はこのようにしてみました:

protected void ListView2_ItemDataBound(object sender, ListViewItemEventArgs e){ 
      { 
      if (e.Item == null) return; 
      Button btn1 = (Button)e.Item.FindControl("YesBtn"); 
      btn1.Visible = false; 

これに特定の行情報を追加する方法がわかりません。
Asp.Net WebフォームエンティティフレームワークC#

答えて

1

ListViewでループを繰り返し、ステータス列のインデックスを取得することをお勧めします。

for (int i = 0; i < ListView1.Items.Count(); i++) 
{ 
    //Get the Label by row 
    Label label1 = (Label)ListView1.Items[i].FindControl("label1"); 
} 

がより多くのためにこれを参照してください - Loop Through ListView

更新:最後に、次のような何かだけで以下のコードを貼り付けます。のDefault.aspxを

<asp:ListView ID="ListView1" runat="server" OnItemDataBound="ListView1_ItemDataBound"> 
     <ItemTemplate> 
      <asp:Label ID="label1" runat="server" Text='<%#Eval("ID") %>'></asp:Label> 
      <asp:Label ID="label2" runat="server" Text='<%#Eval("name") %>'></asp:Label> 
      <asp:Label ID="label3" runat="server" Text='<%#Eval("Status") %>'></asp:Label> 
      <asp:Button ID="button1" runat="server" Text="Add" Enabled='<%# Eval("Status").ToString() == "1" %>' /> 
      <br /> 
     </ItemTemplate> 
</asp:ListView> 

Default.aspx.cs

コードビハインド

protected void Page_Load(object sender, EventArgs e) 
    { 
     ListView1.DataSource = GetAllUsers(); 
     ListView1.DataBind(); 
    } 

    public class User 
    { 
     public int ID { get; set; } 
     public string name { get; set; } 
     public string Status { get; set; } 
    } 

    public List<User> GetAllUsers() 
    { 
     User aUser = new User(); 

     List<User> Users = new List<User>(); 

     Users.Add(new User() { ID = 1, name = "AT-2016", Status = "1" }); 
     Users.Add(new User() { ID = 2, name = "AT-2014", Status = "0" }); 

     return Users; 
    } 

    protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e) 
    { 
     for (int i = 0; i < ListView1.Items.Count(); i++) 
     { 
      //Get the Label by row 
      Label status = (Label)ListView1.Items[i].FindControl("label3"); 
      Button button1 = (Button)ListView1.Items[i].FindControl("button1"); 

      if (status.Text == "1") 
      { 
       button1.Enabled = true; 
      } 
      else 
      { 
       button1.Enabled = false; 
      } 
     } 
    } 

サンプル出力:

ListView_Button_Disable

+0

は、その特定の行のボタンを無効にします。 –

+0

申し訳ありませんが、私はWebフォームではなく、Windowsフォームを持っています。この場合、コードを更新するにはどうすればよいですか、System.Windows.Forms名前空間を追加するだけでコードを作成できますか? –

+0

SubItemsとindex - これはWindows.Formsのものです –

1

はこれを試してみてください:それはカラム値**拒否**を持っている場合は、上記を使用して

<asp:Button Visible='<%# Eval("ReqStatus").ToString() == "Reject" %>' runat="server" Text="Button1" ID="YesBtn" /> 
+0

これは、次のようにはなりません: 'Visible = '<%#Eval(" ReqStatus ")。ToString()!=" Reject "%>'' –

+0

@ AT-2016あなたは私にplz - どのような方法が良いか教えてください - コードビハインド、またはこれ? –

+0

どちらの方法も完璧です@АндрейГолубцов。それらのいずれかを使用することができます。 –

関連する問題