2013-02-20 50 views
0

我獲取了一組從一個Web服務價值和填充DataList控件與值 -隱藏DataList的行基於從網絡服務價值

ActiveDataList.DataSource = ws.TermsReturnActive(sql); 
ActiveDataList.DataBind(); 

如何隱藏取決於DataList控件的特定列值, 例如

if(value == 1) 
{ 
//Hide Column 
} 

但是,該操作將不得不隱藏與它並行的另一個dataList的同一行。 我可以通過從第一爲使檢索值使用第二DataList控件修改細胞 -

TextBox tb1 = (TextBox)sender; 
     DataListItem item1 = (DataListItem)tb1.NamingContainer; 

     TextBox txt1 = (TextBox)tData.Items[item1.ItemIndex].FindControl("tTextBox"); 

     string term = txt1.Text; 

所以,如果我可以檢索從單獨的DataList行的值,我想我也能調整其可見度。

我該如何做到這一點,因爲web服務調用是在頁面加載完成的,所以我相信在dataList項被綁定時就必須完成這項工作。

回答

1

如果IAM的權利,你應該在你的aspx文件的權利?:

<asp:DataList ID="DataList1" runat="server" OnItemDataBound="DataList1_ItemDataBound"></asp:DataList> 

這樣的事情正如你所看到的,你應該加一個「OnItemDataBound」事件,你可以檢查你的價值和隱藏項目,如果你想。

所以,你可以像這樣的反應和隱藏的一些項目:

protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e) 
    { 
     if (e.Item.ItemType == ListItemType.Item) 
     { 
      TextBox tbCurrentTextBox = (TextBox)e.Item.FindControl("tTextBox"); 
      if (DataList1.Items[e.Item.ItemIndex].ToString() == "1") 
      { 
       e.Item.Visible = false; 
      } 
     } 
    } 
+0

此帶回 - 索引超出範圍。必須是非負數且小於集合的大小。 參數名稱:索引。我確信我引用了正確的數據主義加控制,你有什麼建議? – Ebikeneser 2013-02-20 14:41:05

+0

看看我的回答我添加了一個檢查,如果當前項目是一種「項目」,所以你不會得到一個錯誤。 – noonecares 2013-02-20 14:53:07