0

DropDownList の値と GridView の列の値を比較し、異なる場合は非表示にする方法は?

私は5つの列を持っています。最初と 2 番目は DropdownList の値で、その他は DMX クエリの結果です。DropDownList でユーザーが選択した値と異なる場合は、3 番目の列の値を非表示にする必要があります。

多くの解決策を試しましたが、うまくいきません。最後に、この機能を試してみました。前もって感謝します!

プライベート ボイド GenerateUniqueData() {

    for (int i = 0; i < GridView1.Rows.Count; i++)
    {

        DataControlFieldCell cell = GridView1.Rows[i].Cells[2] as DataControlFieldCell;
        if (cell.Text!=DropDownList6.SelectedItem.Value)
            GridView1.Rows[i].Visible = false;
    }

} 
4

1 に答える 1

0

この記事を見てください。ここでカバーするには多すぎる: http://www.codeproject.com/Articles/43727/Show-Hide-GridView-Columns-in-ASP-NET

編集: コード ビハインドを使用してプレーンな ASP.NET で試してみましょう: 最初に確認することは、DropDownListでAutoPostBackをオンにしましたか? サーバーへの往復がない場合、コードに違いはなく、実行されません。

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True">
</asp:DropDownList>

これが実際の例です... HTML:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="DataGridTest.aspx.cs" Inherits="DataGridTest" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" 
            onselectedindexchanged="DropDownList1_SelectedIndexChanged">
        </asp:DropDownList>
        <br />
        <br />
        <asp:GridView ID="GridView1" runat="server">
        </asp:GridView>
    </div>
    </form>
</body>
</html>

コードビハインド:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

public partial class DataGridTest : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            List<string> ddData = new List<string>();
            ddData.Add("Col 21");
            ddData.Add("Col 22");
            ddData.Add("Col 23");

            this.DropDownList1.DataSource = ddData;
            this.DropDownList1.DataBind();

            DataTable gridData = new DataTable();
            gridData.Columns.Add("Description");
            gridData.Columns.Add("Column 1");
            gridData.Columns.Add("Column 2");
            gridData.Columns.Add("Column 3");

            gridData.Rows.Add("Row 1", "Col 11", "Col 21", "Col 31");
            gridData.Rows.Add("Row 2", "Col 12", "Col 22", "Col 32");
            gridData.Rows.Add("Row 3", "Col 13", "Col 23", "Col 33");
            gridData.Rows.Add("Row 3", "Col 14", "Col 22", "Col 34");

            this.GridView1.DataSource = gridData;
            this.GridView1.DataBind();
        }
    }

    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        for (int i = 0; i < this.GridView1.Rows.Count; i++)
        {
            this.GridView1.Rows[i].Visible = true;

            string cellvalue = GridView1.Rows[i].Cells[2].Text;
            if (cellvalue.TrimEnd() != this.DropDownList1.SelectedItem.Value.TrimEnd())
                GridView1.Rows[i].Visible = false;
        }
    }
}
于 2013-01-24T23:58:57.680 に答える