求 DATAGRID一个带有 分页功能并能多行编辑,多行删除的(编辑与删除可跨页进行) 等待,谢谢啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 多行编辑可以看这个示例:http://www.dotnetjunkies.com/Article/65DC168F-B2AD-408B-8AA0-AD90DD739317.dcik编辑与删除可跨页进行 不是很理解什么意思,如果是指多次编辑后一次提交,那么用b/s方式虽然也可以实现,但会非常麻烦。 是多行编辑吗: biggersea(biggersea) webdiyer(陕北吴旗娃) :你说我也看过,还根据它改了呢,就是弄不好呀,关键,我想要的sql+ASP.NET UP UP UP UP 要实现跨页编辑数据,你需要用ViewState或者Session来保存先前编辑的数据,用Session会比较简单,可惜一时没有找到相关的例子。 用datatable绑定datagrid可以做出来的关键在于换页时记得要更新当前页所在行的datatable的记录 陕北吴旗娃:如果用session的话,那同一页的同一列的update不是很麻烦,能不能具体点,举个例子? cansum396(沉觉不醒) :用datatable绑定datagrid能不能给个范例呀,谢谢 以下是部分代码,没有分页的,忘高手提供分页的,谢谢private void Page_Load(object sender, System.EventArgs e) { // 在此处放置用户代码以初始化页面 if (!Page.IsPostBack ) { // 如果是第一次装载的话,绑定数据。 BindContacts(); //_sSort = "id"; // } // else // { // 否则,从视图状态中读取排序状态. // _sSort = (string)ViewState["Sort"]; } } private void BindContacts() { // 保存排序状态到视图状态中. // ViewState["Sort"] = _sSort; // 绑定网格到已排序的数据视图中. da.Fill(ds1); //DataView dv = new DataView(_dsContacts.Tables["Contact"]); //dv.Sort = _sSort; dgContacts.DataSource = ds1; dgContacts.DataBind(); } private void btnUpdate_Click(object sender, System.EventArgs e) { // string dgIDs = ""; foreach (DataGridItem di in dgContacts.Items) { // 确信是数据项而不是页首或页尾. if (di.ItemType == ListItemType.Item || di.ItemType == ListItemType.AlternatingItem) { // 取得更新或删除操作执行以后的当前行. // DataRow dr = ds1.Tables["Contact"].Rows.Find(dgContacts.DataKeys[di.ItemIndex]); // 检查是否需要删除某行. if (((CheckBox)di.FindControl("chkDelete")).Checked) { // dgIDs += ((Label) di.FindControl ("id")).Text.ToString() + ","; // ds1.Tables["Contact"].Rows.Remove(ds1.Tables["Contact"].Rows.Find(dgContacts.DataKeys[di.ItemIndex]));//删除指定行 } else { // //更新数据行. // dr["id"] = ((TextBox)di.FindControl("id")).Text; // dr["Name"] = ((TextBox)di.FindControl("Name")).Text; // dr["pp"] = ((TextBox)di.FindControl("pp")).Text; string strUpdate=""; strUpdate+="name='"+((TextBox)di.FindControl("Name")).Text+"'"; strUpdate+=",pp='"+((TextBox)di.FindControl("pp")).Text+"'"; string updateCmd="UPDATE pl set "+strUpdate+" where id='"+((TextBox)di.FindControl("id")).Text+"'"; SqlCommand myCommand=new SqlCommand(updateCmd,sqlCon); myCommand.Connection.Open(); myCommand.ExecuteNonQuery(); myCommand.Connection.Close(); } } //if (ds1.HasChanges()) //{ //} } // 如果有变化则保存它. BindContacts();//绑定 } private void dgContacts_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) { if (e.CommandName == "Add") { //string[] sContact = {"", "", ""}; // sContact[0] = ((TextBox)e.Item.FindControl("Newid")).Text; // sContact[1] = ((TextBox)e.Item.FindControl("NewName")).Text; //sContact[2] = ((TextBox)e.Item.FindControl("Newpp")).Text; // ds1.Tables["Contact"].Rows.Add(sContact); string strUpdate=""; strUpdate+="Name='"+((TextBox)e.Item.FindControl("NewName")).Text+"''"; strUpdate+=",pp='"+((TextBox)e.Item.FindControl("Newpp")).Text+"'"; string updateCmd="UPDATE pl set "+strUpdate+" where id='"+((TextBox)e.Item.FindControl("Newid")).Text+"'"; SqlCommand myCommand=new SqlCommand(updateCmd,sqlCon); myCommand.Connection.Open(); myCommand.ExecuteNonQuery(); myCommand.Connection.Close(); } BindContacts(); } 你看一下SQL语句附近是否有问题啊?程序没问题。我做过。但分页的我没做过。帮你UP。 如何批量上传一个文件夹内所有的图片! asp.net word如何转换成mht 怎样将数据库连接到一个Flash中 类似qq空间批量上传图片工具 PlaceHolder动态加载包含验证控件的用户控件 字符串中关于引号的处理 生成静态页,使用的模板中有动态内容怎么办? 初学XML,问一个小问题 这样合理吗?关于解除合同 向数据库里面添加点东西这么难呀。各位看看我的代码,哪里出问题了? update的问题,语句正常,但执行不出,请帮忙看看 各位老大帮帮小弟吧!(关于页面title的问题)
关键在于换页时记得要更新当前页所在行的datatable的记录
cansum396(沉觉不醒) :用datatable绑定datagrid能不能给个范例呀,谢谢
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if (!Page.IsPostBack )
{
// 如果是第一次装载的话,绑定数据。
BindContacts();
//_sSort = "id";
// }
// else
// {
// 否则,从视图状态中读取排序状态.
// _sSort = (string)ViewState["Sort"];
} }
private void BindContacts()
{
// 保存排序状态到视图状态中.
// ViewState["Sort"] = _sSort; // 绑定网格到已排序的数据视图中.
da.Fill(ds1);
//DataView dv = new DataView(_dsContacts.Tables["Contact"]);
//dv.Sort = _sSort;
dgContacts.DataSource = ds1;
dgContacts.DataBind();
}
private void btnUpdate_Click(object sender, System.EventArgs e)
{
// string dgIDs = "";
foreach (DataGridItem di in dgContacts.Items)
{
// 确信是数据项而不是页首或页尾. if (di.ItemType == ListItemType.Item || di.ItemType == ListItemType.AlternatingItem)
{
// 取得更新或删除操作执行以后的当前行.
// DataRow dr = ds1.Tables["Contact"].Rows.Find(dgContacts.DataKeys[di.ItemIndex]); // 检查是否需要删除某行.
if (((CheckBox)di.FindControl("chkDelete")).Checked)
{
// dgIDs += ((Label) di.FindControl ("id")).Text.ToString() + ","; // ds1.Tables["Contact"].Rows.Remove(ds1.Tables["Contact"].Rows.Find(dgContacts.DataKeys[di.ItemIndex]));//删除指定行
}
else
{
// //更新数据行.
// dr["id"] = ((TextBox)di.FindControl("id")).Text;
// dr["Name"] = ((TextBox)di.FindControl("Name")).Text;
// dr["pp"] = ((TextBox)di.FindControl("pp")).Text;
string strUpdate="";
strUpdate+="name='"+((TextBox)di.FindControl("Name")).Text+"'";
strUpdate+=",pp='"+((TextBox)di.FindControl("pp")).Text+"'";
string updateCmd="UPDATE pl set "+strUpdate+" where id='"+((TextBox)di.FindControl("id")).Text+"'";
SqlCommand myCommand=new SqlCommand(updateCmd,sqlCon);
myCommand.Connection.Open();
myCommand.ExecuteNonQuery();
myCommand.Connection.Close();
}
}
//if (ds1.HasChanges())
//{
//}
} // 如果有变化则保存它.
BindContacts();//绑定
} private void dgContacts_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if (e.CommandName == "Add")
{
//string[] sContact = {"", "", ""};
// sContact[0] = ((TextBox)e.Item.FindControl("Newid")).Text;
// sContact[1] = ((TextBox)e.Item.FindControl("NewName")).Text;
//sContact[2] = ((TextBox)e.Item.FindControl("Newpp")).Text; // ds1.Tables["Contact"].Rows.Add(sContact); string strUpdate="";
strUpdate+="Name='"+((TextBox)e.Item.FindControl("NewName")).Text+"''";
strUpdate+=",pp='"+((TextBox)e.Item.FindControl("Newpp")).Text+"'";
string updateCmd="UPDATE pl set "+strUpdate+" where id='"+((TextBox)e.Item.FindControl("Newid")).Text+"'";
SqlCommand myCommand=new SqlCommand(updateCmd,sqlCon); myCommand.Connection.Open();
myCommand.ExecuteNonQuery();
myCommand.Connection.Close();
} BindContacts();
}
帮你UP。