为什么Gridview页面索引Chaingin无法正常运行! [英] Why Gridview Page Index Chaingin doesn't work !!
本文介绍了为什么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();
}
有LinkButton 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屋!
查看全文