注意:
1.是在WinForm,不是ASP.NET
2.DataGrid是在可编辑情况下分页
网上看了很多相关程序,基本上DataGrid都是不可编辑的,翻页后数据清空或不是同一个表,微软网站的例子中DataGrid也是只读的,各位大侠,帮帮忙啊!最好给个例子啊,谢谢了!
1.是在WinForm,不是ASP.NET
2.DataGrid是在可编辑情况下分页
网上看了很多相关程序,基本上DataGrid都是不可编辑的,翻页后数据清空或不是同一个表,微软网站的例子中DataGrid也是只读的,各位大侠,帮帮忙啊!最好给个例子啊,谢谢了!
可编辑与分页没有关系。
分页时保存即可
http://support.microsoft.com/kb/307710/zh-cn
http://topic.csdn.net/t/20050418/09/3944832.html
public string AddSql= "";
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void findbtn_Click(object sender,System.EventArgs e)
{
string FindStr = findstr.Text ;
if(FindStr != "")
{
AddSql= "WHERE UserName = '"+FindStr+"'" ;
}
else
{
MessageBox.Show("请输入查询的名字");
}
NowPage= 1;
PageCount = 1;
LoadData(sender,e);
}
/// <summary>
/// 上下页按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void p_btn_Click(object sender, System.EventArgs e)
{
NowPage--;
LoadData(sender,e);
}
private void n_btn_Click(object sender, System.EventArgs e)
{
NowPage++;
LoadData(sender,e);
}
/// <summary>
/// 登陆数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void LoadData(object sender,System.EventArgs e)
{
try
{
string Afile = "server=(local);user id=sa;password=;database=woker";
//设置数据库连接
SqlConnection SconnStr = new SqlConnection (Afile);
if(SconnStr.State.ToString()=="Closed")
{
SconnStr.Open ();
}
SqlCommand Countcmd = new SqlCommand ("select count(*) as co from TABLE2",SconnStr);
SqlDataReader Countdr = Countcmd.ExecuteReader();
if(Countdr.Read())
{
PageCount = Int32.Parse (Countdr["co"].ToString ())/PageSize;
if(Int32.Parse (Countdr["co"].ToString ())%PageSize>0)
{
PageCount = PageCount +1;
}
if(PageCount<1)
{
PageCount=1;
}
}
SconnStr.Close ();
pageinfo.Text ="共"+PageCount+"页\t 第"+NowPage+"页";
//设置操作数据库命令
if(NowPage>=PageCount)
{
NowPage= PageCount;
}
if(NowPage<=1)
{
NowPage=1;
}
int start = (NowPage-1)*PageSize; string command = "select * from TABLE2 "+AddSql+" order by ID";
SqlDataAdapter sda = new SqlDataAdapter ( command,SconnStr);
DataSet ds = new DataSet ();
sda.Fill(ds,start,PageSize,"search");
dataGrid1.DataSource = ds.Tables ["search"].DefaultView ;
dataGrid1.SetDataBinding(ds,"search");
}
catch(Exception err)
{
MessageBox.Show(err.Message.ToString());
}
}
按照你写的,我运行了,在第一页写上数据,翻到下一页,然后又翻到第一页,我在第一页写的数据还是清空了啊?
private void Form1_Load(object sender, System.EventArgs e)
{
string conStr = "Data Source=127.0.0.1;Persist Security Info=true;Initial Catalog =test;user id=sa;password=";
SqlConnection conn = new SqlConnection (conStr);
conn.Open();
int start = (NowPage-1)*PageSize;
string command = "select distinct text_CN,isnull(text_CnJP,'')text_CnJP from main where item='01' and ltrim(isnull(text_CnJP,''))<>'' order by text_CnJP";
da = new SqlDataAdapter ( command,conn);
ds = new DataSet ();
da.Fill(ds,start,PageSize,"main");
dataGrid1.DataSource = ds.Tables ["main"].DefaultView ;
} private void preLink_LinkClicked(object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e)
{
NowPage--;
LoadData(sender,e);
} private void nextLink_LinkClicked(object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e)
{
NowPage++;
LoadData(sender,e);
} private void LoadData(object sender,System.EventArgs e)
{
try
{
string conStr = "Data Source=127.0.0.1;Persist Security Info=true;Initial Catalog =test;user id=sa;password=";
SqlConnection conn = new SqlConnection (conStr);
if(conn.State.ToString()=="Closed")
{
conn.Open ();
}
SqlCommand cmd = new SqlCommand ("select count(distinct text_CnJP) as co from main where item='01' and ltrim(isnull(text_CnJP,''))<>''",conn);
SqlDataReader Countdr = cmd.ExecuteReader();
if(Countdr.Read())
{
PageCount = Int32.Parse (Countdr["co"].ToString ())/PageSize;
if(Int32.Parse (Countdr["co"].ToString ())%PageSize>0)
{
PageCount = PageCount +1;
}
if(PageCount<1)
{
PageCount=1;
}
}
conn.Close ();
pageinfo.Text ="共"+PageCount+"页\t 第"+NowPage+"页";
//设置操作数据库命令
if(NowPage>=PageCount)
{
NowPage= PageCount;
}
if(NowPage<=1)
{
NowPage=1;
}
int start = (NowPage-1)*PageSize; string command = "select distinct text_CN,isnull(text_CnJP,'')text_CnJP from main where item='01' and ltrim(isnull(text_CnJP,''))<>'' order by text_CnJP";
da = new SqlDataAdapter ( command,conn);
ds = new DataSet ();
da.Fill(ds,start,PageSize,"main");
dataGrid1.DataSource = ds.Tables ["main"].DefaultView ;
}
catch(Exception err)
{
MessageBox.Show(err.Message.ToString());
}
}
}