2013-02-20 68 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