0

Web サービスから一連の値を取得し、それらの値を dataList に入力しています。

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

値に応じて dataList の特定の列を非表示にするにはどうすればよいですか。

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

ただし、このアクションは、それと並行して別の dataList の同じ行を非表示にする必要があります。最初のデータから値を取得することで、この 2 番目の 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 に答える