为什么Gridview页面索引Chaingin无法正常运行! [英] Why Gridview Page Index Chaingin doesn't work !!

查看:80
本文介绍了为什么Gridview页面索引Chaingin无法正常运行!的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

<%@ Page Title="Search Business Type" Language="C#" MasterPageFile="~/ydgMasterPage.master"

    AutoEventWireup="true" CodeFile="SearchBusinessType.aspx.cs" Inherits="SearchBusinessType" %>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    <link href="css/gridView.css" rel="stylesheet" type="text/css" />
    <div align="center">
        <asp:Label ID="lblSearching" runat="server" ForeColor="Red" Font-Size="Large">Search By Business Type</asp:Label><br />
        <asp:LinkButton ID="lnkBtnA" runat="server" OnClick="lnkBtnA_Click">A</asp:LinkButton>
        <asp:LinkButton ID="lnkBtnB" runat="server" OnClick="lnkBtnB_Click">B</asp:LinkButton>
        <asp:LinkButton ID="lnkBtnC" runat="server" OnClick="lnkBtnC_Click">C</asp:LinkButton>
 </div>
    <br />
<div align="center">
        <asp:Label ID="Message" ForeColor="Red" runat="server" />
        <asp:GridView ID="gridAlphaBetical" runat="server" EmptyDataText="There is no Data."

            AutoGenerateColumns="False" Width="500px"AllowPaging="true"

            EnableModelValidation="True" OnPageIndexChanging="gridAlphaBetical_PageIndexChanging1">
            <Columns>
                <asp:BoundField DataField="New Business Type" HeaderText="Business Type(Eng)" />
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:LinkButton ID="lnkView" runat="server" CommandArgument="<%#Bind('Sr') %>" OnCommand="lnkView_Click"

                            Text="View" ViewStateMode="Enabled"></asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
    </div>
</asp:Content>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Web.Security;
using System.Data.SqlClient;
using System.Web.Configuration;

public partial class SearchBusinessType : System.Web.UI.Page
{
    protected void gridAlphaBetical_PageIndexChanging1(object sender, GridViewPageEventArgs e)
    {
        if(Page.IsPostBack)
        {
            gridAlphaBetical.PageIndex = e.NewPageIndex;

        }

    }

 public void BindGridData_A()
    {

            string constring = WebConfigurationManager.ConnectionStrings["ydConnectionString"].ToString();
            SqlConnection connection = new SqlConnection(constring);

            SqlCommand cmd = new SqlCommand();
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.SelectCommand = cmd;
            cmd.Connection = connection;
            DataTable dtA = new DataTable();

            cmd.CommandText = "SELECT * FROM BusinessCode WHERE [New Business Type] LIKE 'A%'";

            da.Fill(dtA);
            gridAlphaBetical.DataSource = dtA;
            gridAlphaBetical.DataBind();

    }
    public void BindGridData_B()
    {

            string constring = WebConfigurationManager.ConnectionStrings["ydConnectionString"].ToString();
            SqlConnection connection = new SqlConnection(constring);

            SqlCommand cmd = new SqlCommand();
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.SelectCommand = cmd;
            cmd.Connection = connection;
            DataTable dtB = new DataTable();


            cmd.CommandText = "SELECT * FROM  BusinessCode WHERE [New Business Type] LIKE 'B%'";

            da.Fill(dtB);
            gridAlphaBetical.DataSource = dtB;
            gridAlphaBetical.DataBind();

    }
    public void BindGridData_C()
    {

            string constring = WebConfigurationManager.ConnectionStrings["ydConnectionString"].ToString();
            SqlConnection connection = new SqlConnection(constring);

            SqlCommand cmd = new SqlCommand();
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.SelectCommand = cmd;
            cmd.Connection = connection;
            DataTable dtC = new DataTable();


            cmd.CommandText = "SELECT * FROM  BusinessCode WHERE [New Business Type] LIKE 'C%'";

            da.Fill(dtC);
            gridAlphaBetical.DataSource = dtC;
            gridAlphaBetical.DataBind();

    }

 protected void lnkBtnA_Click(object sender, EventArgs e)
    {

          BindGridData_A();


    }
    protected void lnkBtnB_Click(object sender, EventArgs e)
    {


            BindGridData_B();

    }
    protected void lnkBtnC_Click(object sender, EventArgs e)
    {
            BindGridData_C();
    }


}

推荐答案

由于您没有使用SqlDataSource(或任何其他DataSource组件),因此每次网格更改时,都必须手动调用DataBind方法.由于您拥有3个不同的数据集,因此需要跟踪哪个处于活动状态.我在这里使用ViewState,但可以采用其他任何方式.

Because you''re not using SqlDataSource (or any other DataSource component), you have to call DataBind method manually every time grid changes. Since you have 3 different data sets, you need to keep track which is active. I used ViewState here but it can be any other way.

protected void gridAlphaBetical_PageIndexChanging1(object sender, GridViewPageEventArgs e)
{
    if(Page.IsPostBack)
    {
        gridAlphaBetical.PageIndex = e.NewPageIndex;
        switch ((string)ViewState["activeBinding"])
        {
            case "A": BindGridData_A(); break;
            case "B": BindGridData_B(); break;
            case "C": BindGridData_C(); break;
        }
    }
}

protected void lnkBtnA_Click(object sender, EventArgs e)
{
    BindGridData_A();
    ViewState["activeBinding"] = "A";
}

protected void lnkBtnB_Click(object sender, EventArgs e)
{
    BindGridData_B();
    ViewState["activeBinding"] = "B";
}

protected void lnkBtnC_Click(object sender, EventArgs e)
{
    BindGridData_C();
    ViewState["activeBinding"] = "C";
}


@ Sjelen

请检查PageIndexChanging1事件

Hi @Sjelen

Please check the PageIndexChanging1 event

protected void gridAlphaBetical_PageIndexChanging1(object sender, GridViewPageEventArgs e)
    {
        if(Page.IsPostBack)
        {
            gridAlphaBetical.PageIndex = e.NewPageIndex;
////////////////////////
Here you have to bind the grid again ///////////////
        }

    }



希望能解决您的问题

谢谢



Hope it will solve your problem

Thanks


<%@ Page Title="Search Business Type" Language="C#" MasterPageFile="~/ydgMasterPage.master"

    AutoEventWireup="true" CodeFile="SearchBusinessType.aspx.cs" Inherits="SearchBusinessType" %>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    <link href="css/gridView.css" rel="stylesheet" type="text/css" />
    <div align="center">
        <asp:Label ID="lblSearching" runat="server" ForeColor="Red" Font-Size="Large">Search By Business Type</asp:Label><br />
        <asp:LinkButton ID="lnkBtnA" runat="server" OnClick="lnkBtnA_Click">A</asp:LinkButton>
        <asp:LinkButton ID="lnkBtnB" runat="server" OnClick="lnkBtnB_Click">B</asp:LinkButton>
        <asp:LinkButton ID="lnkBtnC" runat="server" OnClick="lnkBtnC_Click">C</asp:LinkButton>
 </div>
    <br />
<div align="center">
        <asp:Label ID="Message" ForeColor="Red" runat="server" />
        <asp:GridView ID="gridAlphaBetical" runat="server" EmptyDataText="There is no Data."

            AutoGenerateColumns="False" Width="500px"AllowPaging="true"

            EnableModelValidation="True" OnPageIndexChanging="gridAlphaBetical_PageIndexChanging1">
            <Columns>
                <asp:BoundField DataField="New Business Type" HeaderText="Business Type(Eng)" />
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:LinkButton ID="lnkView" runat="server" CommandArgument="<%#Bind('Sr') %>" OnCommand="lnkView_Click"

                            Text="View" ViewStateMode="Enabled"></asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
    </div>
</asp:Content>


    protected void gridAlphaBetical_PageIndexChanging1(object sender, GridViewPageEventArgs e)
    {
        if(Page.IsPostBack)
        {
            gridAlphaBetical.PageIndex = e.NewPageIndex;

        }

    }

 public void BindGridData_A()
    {

            string constring = WebConfigurationManager.ConnectionStrings["ydConnectionString"].ToString();
            SqlConnection connection = new SqlConnection(constring);

            SqlCommand cmd = new SqlCommand();
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.SelectCommand = cmd;
            cmd.Connection = connection;
            DataTable dtA = new DataTable();

            cmd.CommandText = "SELECT * FROM BusinessCode WHERE [New Business Type] LIKE 'A%'";

            da.Fill(dtA);
            gridAlphaBetical.DataSource = dtA;
            gridAlphaBetical.DataBind();

    }
    public void BindGridData_B()
    {

            string constring = WebConfigurationManager.ConnectionStrings["ydConnectionString"].ToString();
            SqlConnection connection = new SqlConnection(constring);

            SqlCommand cmd = new SqlCommand();
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.SelectCommand = cmd;
            cmd.Connection = connection;
            DataTable dtB = new DataTable();


            cmd.CommandText = "SELECT * FROM  BusinessCode WHERE [New Business Type] LIKE 'B%'";

            da.Fill(dtB);
            gridAlphaBetical.DataSource = dtB;
            gridAlphaBetical.DataBind();

    }
    public void BindGridData_C()
    {

            string constring = WebConfigurationManager.ConnectionStrings["ydConnectionString"].ToString();
            SqlConnection connection = new SqlConnection(constring);

            SqlCommand cmd = new SqlCommand();
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.SelectCommand = cmd;
            cmd.Connection = connection;
            DataTable dtC = new DataTable();


            cmd.CommandText = "SELECT * FROM  BusinessCode WHERE [New Business Type] LIKE 'C%'";

            da.Fill(dtC);
            gridAlphaBetical.DataSource = dtC;
            gridAlphaBetical.DataBind();

    }

 protected void lnkBtnA_Click(object sender, EventArgs e)
    {

          BindGridData_A();


    }
    protected void lnkBtnB_Click(object sender, EventArgs e)
    {


            BindGridData_B();

    }
    protected void lnkBtnC_Click(object sender, EventArgs e)
    {
            BindGridData_C();
    }



有LinkBut​​ton A,B和C.
当单击A ..时,数据将显示Like''A%'',依此类推...
问题是........将分页添加到网格视图时,分页无法正常工作,需要再次按下并再次按下链接按钮A,B和C ...
我已经尽力了....但是无法解决问题.......



There is LinkButton A,B and C.
When Click A.. the data will show Like''A%'' and so on...
The problem is........ When adding the paging to the grid view,paging doesn''t work correctly and need to press and press again to the linkButton A,B and C ...
I tested all i can....but can''t get the solution .......


这篇关于为什么Gridview页面索引Chaingin无法正常运行!的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆