private DataTable GetTable()
{
DataTable dt = Session["Tables"] as DataTable;
if (dt == null)
{
dt = new DataTable();
dt.Columns.Add("DeliveryAdress", typeof(string));
dt.Columns.Add("BillNo", typeof(string));
dt.PrimaryKey = new DataColumn[] { dt.Columns["BillNo"] };
Session["Tables"] = dt; } return dt;
}
DataTable table = this.GetTable();
DataRow dr = table.Rows.Find(this.gvEnv.DataKeys[e.RowIndex].Value.ToString());
調用方法咋一直提示表沒有主鍵
求解。。
这句加断点,测试下。
dt.PrimaryKey = new DataColumn[] { dt.Columns["BillNo"] };这一句加了。。还报这个?你数据库中有主键吗?
從數據庫讀取數據出來,billNo爲非空唯一的編號
因此,在Datatable中作爲主鍵填充
dt.PrimaryKey = new DataColumn[] { dt.Columns["BillNo"] };//这里就是空
但是在DataRow dr = table.Rows.Find(this.gvEnv.DataKeys[e.RowIndex].Value.ToString());
之前有方法讀取數據
看gvEnv这个控件是否绑定主键.
gvEnv.DataKeyNames = new string[] { "BillNo" };
這個是有值地。
看你的代码:DataTable dt = Session["Tables"] as DataTable;
if (dt == null)
{
dt = new DataTable();
dt.Columns.Add("DeliveryAdress", typeof(string));
dt.Columns.Add("BillNo", typeof(string));
dt.PrimaryKey = new DataColumn[] { dt.Columns["BillNo"] };
Session["Tables"] = dt; } return dt;
}
只有dt为空的时候你才给dt设置了主键.
应该是bt不为空的时候,dt没有设置主键,看看你Session中Tables的设置。