0

我正在从 Web 服务中检索一组值并用这些值填充 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 项时完成?

4

1 回答 1

1

如果我是正确的,你应该在你的 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;
           }
       }
   }
于 2013-02-20T14:22:36.107 回答