多视图控件

时间:2016-02-03 07:51:14

标签: c# asp.net multiview

我在使用gridview和datalist的多视图中编写了以下代码:

<ContentPlaceHolderID="ContentPlaceHolder1">
    <div class="alert alert-success" >
      <div class="divbtn" style="text-align:right">
            <asp:LinkButton ID="gridbtn" runat="server" CssClass="glyphicon glyphicon-th" OnClick="gridbtn_Click"></asp:LinkButton>
            <asp:LinkButton ID="listbtn" runat="server" CssClass="glyphicon glyphicon-th-list" OnClick="listbtn_Click"></asp:LinkButton>
      </div>
    </div>

    <asp:MultiView runat="server" ID="multiview" ActiveViewIndex="0"> 
        <asp:View runat="server" ID="gridview">   
             <uc1:GridControl runat="server" ID="GridControl"/>
        </asp:View>

        <asp:View runat="server" ID="listview">
            <uc1:Listing runat="server" ID="Listing" />
        </asp:View>
    </asp:MultiView>

</asp:Content>

我使用两个链接按钮通过触发两个单独的事件来调用各自的视图,如下所示。

protected void listbtn_Click(object sender, EventArgs e)
    {
        multiview.ActiveViewIndex = 1;
    }

    protected void gridbtn_Click(object sender, EventArgs e)
    { 
        multiview.ActiveViewIndex = 0;
    }

假设我的datalist(Index = 1)在我的页面上处于活动状态,如果有回发帖子,它仍应显示datalist但在回发时它会自动切换回网格视图(Index = 0)。我真的需要帮助!

3 个答案:

答案 0 :(得分:1)

您可以将索引保存到会话变量中,然后在回发后将其读回:

保存:

Session["index"] = index.ToString();

在页面加载中读取它,如下所示:

Index = Session["index"];

您将需要会话变量来维护每个用户会话的状态。如果要维护应用程序的状态,则必须使用应用程序变量。

答案 1 :(得分:0)

您好在page_load事件中添加以下代码。

if(!Page.IsPostBack)
{
    multiview.ActiveViewIndex=0;
}

答案 2 :(得分:0)

我认为您将多视图的活动索引设置为零,如下所示

protected void Page_Load(object sender, EventArgs e)
    {
 multiview.ActiveViewIndex=0;
}

这将导致多视图在每个帖子上将活动索引设置为0.要避免这种情况,您必须将其设置如下

protected void Page_Load(object sender, EventArgs e)
        {
if(!Page.IsPostBack)
{
    multiview.ActiveViewIndex=0;
}
}
相关问题