2012-03-13 6 views
0

をバインド項目データの時にリンクボタンを見つける: - 今私のCSコードは、この場所で今私は次のコードでリストビューを持っています

var cat = DropDownList1.SelectedValue; 
     var DBL = Getdata.GetDataFromSP("Spgetquestionbycategoryid", new object[,] { { "cat" }, { cat } }); 
     if (DBL.Rows[e.Item.DataItemIndex]["Approval"].ToString() == "True") 
     { 
      LinkButton btn = ListView1.Controls[e.Item.DataItemIndex].FindControl("LinkButton1") as LinkButton; 
      LinkButton btn1 = ListView1.Controls[e.Item.DataItemIndex].FindControl("LinkButton2") as LinkButton; 
      btn.BackColor = System.Drawing.Color.Green; 
      btn1.BackColor = System.Drawing.Color.Transparent; 
     } 
     else if (DBL.Rows[e.Item.DataItemIndex]["Approval"].ToString() == "") 
     { 
      LinkButton btn = ListView1.Controls[e.Item.DataItemIndex].FindControl("LinkButton2") as LinkButton; 
      LinkButton btn1 = ListView1.Controls[e.Item.DataItemIndex].FindControl("LinkButton1") as LinkButton; 
      btn.BackColor = System.Drawing.Color.Transparent; 
      btn1.BackColor = System.Drawing.Color.Transparent; 
     } 
     else if (DBL.Rows[e.Item.DataItemIndex]["Approval"].ToString() == "False") 
     { 
      LinkButton btn = ListView1.Controls[e.Item.DataItemIndex].FindControl("LinkButton2") as LinkButton; 
      LinkButton btn1 = ListView1.Controls[e.Item.DataItemIndex].FindControl("LinkButton1") as LinkButton; 
      btn.BackColor = System.Drawing.Color.Red; 
      btn1.BackColor = System.Drawing.Color.Transparent; 
     } 

ときのように与えられる

<asp:ListView ID="ListView1" runat="server" 
     onitemcommand="ListView1_ItemCommand" 
     onitemdatabound="ListView1_ItemDataBound" 
     DataKeyNames="Question_Id" onitemdeleting="ListView1_ItemDeleting" 
     onitemediting="ListView1_ItemEditing" 
      onpagepropertieschanging="ListView1_PagePropertiesChanging" 
      > 

    <ItemTemplate> 
    <ul> 
    <li> <%# Eval("Questiontitle") %> 
    <%# Eval("Mainquestion")%> 

     <asp:LinkButton ID="LinkButton1" runat="server" CommandName="approve" CommandArgument='<%# Eval("Question_Id") %>'>Approve</asp:LinkButton> 

     <asp:LinkButton ID="LinkButton2" runat="server" CommandName="deny" CommandArgument='<%# Eval("Question_Id") %>'>Deny</asp:LinkButton> </li> 
    </ul> 
    </ItemTemplate> 
    <EmptyDataTemplate> 
      <br />No data found 
    </EmptyDataTemplate> 
    <LayoutTemplate> 
     <div ID="itemPlaceholderContainer" runat="server" style="font-family: Verdana, Arial, Helvetica, sans-serif;"> 
     <span ID="itemPlaceholder" runat="server" /> 
     </div> 
     <div style="text-align: center;background-color: #CCCCCC;font-family: Verdana,  Arial, Helvetica, sans-serif;color: #000000;"> 
     </div>  
     <asp:DataPager ID="dpListView" runat="server" PageSize="2" OnPreRender="ListView1_PreRender"> 
      <Fields> 
       <asp:NumericPagerField ButtonType="Link"/> 
      </Fields> 
     </asp:DataPager>   
    </LayoutTemplate> 
    </asp:ListView> 

私はそれが私にnullオブジェクト参照エラーを与えている私のlinkbuttonを見つけることを試みる。 リンクボタンに適用されるいくつかの条件があります。

同じデータからデータを削除するとエラーが表示されず完全に動作しています。 をお勧めします。あなたはPagePropertiesChanged eventにもう一度あなたのListViewコントロールをデータバインドする必要があり

答えて

0

protected void ListView_PagePropertiesChanging(object sender, PagePropertiesChangingEventArgs e) 
{ 
    ListView1.DataSource = getdataSource(); 
    ListView1.DataBind(); 
} 
0

保護無効ListView1_ItemDataBound(オブジェクト送信者、ListViewItemEventArgs E) { 場合(e.Item.ItemType == ListViewItemType.DataItem) {

 LinkButton btn1 = (LinkButton)e.Item.FindControl("LinkButton1"); 

     var approveDeny = false; 

     ListViewDataItem dataItem = (ListViewDataItem)e.Item; 
     System.Boolean.TryParse(DataBinder.Eval(dataItem.DataItem, "ApproveOrDeny").ToString(), out approveDeny); 

     if (approveDeny) 
     { 
      btn1.BackColor = System.Drawing.Color.Green; 
      btn1.BackColor = System.Drawing.Color.Transparent; 
     } 
     else if (!approveDeny) 
     { 
      btn1.BackColor = System.Drawing.Color.Blue; 
      btn1.BackColor = System.Drawing.Color.Transparent; 
     } 
     else 
     { 
      btn1.BackColor = System.Drawing.Color.Red; 
      btn1.BackColor = System.Drawing.Color.Transparent; 
     } 
    } 
} 
関連する問題