datagrid就地编辑的问题!

woainin 2005-08-25 03:38:45
如果我要编辑的行的关键字段由几个字段组成怎么来办?
这样datakeyfield怎么来指定?
怎么获取项索引值?
...全文
111 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
注意,datakeyfield其实根本不显示,而是从显示的columns中剔除的。

所以,不论你的数据源有怎样组合的datakeyfield(例如你可以用!@#$作为分隔符连接多个字段值),都不影响显示输出,而且你还是可以用这个datakeyfield来定位。

不过,有经验的设计师不应该使用业务数据,而应该使用一个全世界唯一的ID(GUID)来代表一条记录。
cherish58 2005-08-26
  • 打赏
  • 举报
回复
用模板列,就算有N个主关键字也无所谓
woainin 2005-08-26
  • 打赏
  • 举报
回复
thanks!
jimu8130 2005-08-25
  • 打赏
  • 举报
回复
学习
LoveCherry 2005-08-25
  • 打赏
  • 举报
回复
比如表中三个字段
key1 int,key2 int,item varchar(50)
前面2个字段联合主键

前台代码:


<asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="False" DataKeyField="DoubleKey">
<Columns>
<asp:BoundColumn DataField="item" HeaderText="item"></asp:BoundColumn>
<asp:ButtonColumn CommandName="del" Text="删除"></asp:ButtonColumn>
</Columns>
</asp:DataGrid>

后台代码:


using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace csdn2
{
public class WebForm20 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid DataGrid1;

private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
SetBind();
}
}
private void SetBind()
{
SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
SqlDataAdapter da=new SqlDataAdapter("select * from doublekey",conn);
DataSet ds=new DataSet();
da.Fill(ds);
DataTable dt=ds.Tables[0];
DataColumn dc=new DataColumn("DoubleKey",typeof(string),"key1+'#'+key2");
dt.Columns.Add(dc);
this.DataGrid1.DataSource=dt;
this.DataGrid1.DataBind();
}
Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/**//// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.DataGrid1.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_ItemCommand);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if(e.CommandName=="del")
{
SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
SqlCommand comm=new SqlCommand("delete from doublekey where key1=@key1 and key2=@key2",conn);
SqlParameter parm1=new SqlParameter("@key1",SqlDbType.Int);
SqlParameter parm2=new SqlParameter("@key2",SqlDbType.Int);
string [] keys=this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString().Split('#');
parm1.Value=keys[0];
parm2.Value=keys[1];
comm.Parameters.Add(parm1);
comm.Parameters.Add(parm2);
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
SetBind();
}
}
}
}

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧