4

C#でアプリケーションを作成しています。5つのリンクがあるページを作成しました。各リンクは、 がある別のページを開きますGridView

これらすべてのグリッドを 1 つのページに作成できますか?つまり、 をクリックlink1すると、そのリンクに対応するグリッドのみがページに表示され、 をクリックするとlink2、 のグリッドのみがlink2表示されますか? アクティブ化されたリンクのグリッドのみが表示され、他のすべてのグリッドは非表示になります。

どのように、またはどこから始めるべきかについて誰かが私を助けることができますか?

4

2 に答える 2

3

タグで Web フォームを指定したので、マルチビュー コントロールは不思議に思うでしょう。グリッドビューごとに異なるビューを持つマルチビュー コントロールを宣言します。これが役に立てば幸いです。

使用法

マークアップ

 <form id="form1" runat="server">


    <asp:LinkButton ID="LinkButton1"  Text="Link1" runat="server" OnClick="LinkButton1_Click">LinkButton</asp:LinkButton>
    <br>
    <asp:LinkButton ID="LinkButton2" runat="server" Text="Link2" OnClick="LinkButton2_Click">LinkButton</asp:LinkButton></br>

<asp:MultiView ID="MultiView1" runat="server" ActiveViewIndex="0">

    <asp:View ID="View1" runat="server" >

        <asp:GridView ID="GridView1" runat="server">
        </asp:GridView>

    </asp:View>

      <asp:View ID="View2" runat="server">
      <asp:GridView ID="GridView2" runat="server">
    </asp:GridView>
</asp:View>
</asp:MultiView>

</form>

コードビハインド

    protected void LinkButton1_Click(object sender, EventArgs e)
    {
        //retrieve data
        GridView1.DataBind();
        MultiView1.ActiveViewIndex=0;
     }


    protected void LinkButton2_Click(object sender, EventArgs e)
    {
         //retrieve data
        GridView1.DataBind();
        MultiView1.ActiveViewIndex=1;
    }
于 2013-01-08T15:19:10.700 に答える
0

私の解決策は、Abide Masaraure が指摘したように、これを行うためのエレガントな方法ではありません。彼の答えに従うことをお勧めします。

ただし、各グリッドビューを異なる div 内に配置し、これらの div に属性"runat=server"を設定することもできます。

また、リンクごとに asp.net リンクボタンを使用できます (この要素のデフォルトの外観は html リンクであるため)。

aspx コードは次のようになります。

<asp:LinkButton runat="server" id="lnkButton_1" text="Link 1" OnClick="lnkButton_1_Click"/>
<asp:LinkButton runat="server" id="lnkButton_2" text="Link 2" OnClick="lnkButton_2_Click"/>
<asp:LinkButton runat="server" id="lnkButton_3" text="Link 3" OnClick="lnkButton_3_Click"/>
<asp:LinkButton runat="server" id="lnkButton_4" text="Link 4" OnClick="lnkButton_4_Click"/>
<asp:LinkButton runat="server" id="lnkButton_5" text="Link 5" OnClick="lnkButton_5_Click"/>

<div runat="server" id="divGrid_1" Visible="false">
   <asp:GridView runat="server" id="grid_1"></asp:GridView>
</div>

<div runat="server" id="divGrid_2" Visible="false">
   <asp:GridView runat="server" id="grid_2"></asp:GridView>
</div>

<div runat="server" id="divGrid_3" Visible="false">
   <asp:GridView runat="server id="grid_3"></asp:GridView>
</div>

<div runat="server" id="divGrid_4" Visible="false">
   <asp:GridView runat="server" id="grid_4"></asp:GridView>
</div>

<div runat="server" id="divGrid_5" Visible="false">
   <asp:GridView runat="server" id="grid_5"></asp:GridView>
</div>

aspx.cs (分離コード) コードは次のようになります。

protected void lnkButton_1_Click(object sender, EventArgs E)
{
   divGrid_1.Visible = true;
   divGrid_2.Visible = false;
   divGrid_3.Visible = false;
   divGrid_4.Visible = false;
   divGrid_5.Visible = false;

   LoadGridView_1();
}

また、リンク ボタン イベントのクリックごとに、対応する div の可視性を true に設定し、他のものを false に設定してから、対応するグリッドビューをロードするメソッドを呼び出します。

私はあなたを助けたと思います。

よろしくお願いします。

于 2013-01-23T12:00:37.820 に答える