国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

DataGrid學(xué)習(xí)六

2024-07-21 02:22:36
字體:
供稿:網(wǎng)友
前一示例的一個問題是,當(dāng)行可編輯時,主鍵字段 (au_id) 也呈現(xiàn)為文本輸入框。您不希望客戶端更改該值,因為需要它來確定更新數(shù)據(jù)庫中的哪一行。幸運的是,可以通過精確指定每一列相對于可編輯行的外觀,禁用將此列呈現(xiàn)為文本框。為此需在 datagrid 的 columns 集合中定義每一行,使用 boundcolumn 控件分配每一列的數(shù)據(jù)字段。使用此方法,您可以完全控制列的順序,以及它們的 readonly 屬性。對于 au_id 列,將 readonly 屬性設(shè)置為 true。當(dāng)行處于編輯模式時,此列將繼續(xù)呈現(xiàn)為標(biāo)簽。下面的示例說明此方法。



aspx文件里面加入datagrid控件半設(shè)置屬性,代碼如下:
<body ms_positioning="gridlayout">
<form id="form7" method="post" runat="server">
<asp:literal id="message" runat="server"></asp:literal>
<asp:datagrid id="datagrid1" runat="server" width="800" backcolor="#ccccff" bordercolor="black" showfooter="false" cellpadding="3" cellspacing="0" font-name="verdana" font-size="8pt" headerstyle-backcolor="#aaaadd" oneditcommand="mydatagrid_edit" oncancelcommand="mydatagrid_cancel" onupdatecommand="mydatagrid_update" datakeyfield="au_id" autogeneratecolumns="false">
<columns>
<asp:editcommandcolumn edittext="編輯" canceltext="取消" updatetext="更新" itemstyle-wrap="false" />
<asp:boundcolumn headertext="au_id" sortexpression="au_id" readonly="true" datafield="au_id" itemstyle-wrap="false" />
<asp:boundcolumn headertext="au_lname" sortexpression="au_lname" datafield="au_lname" />
<asp:boundcolumn headertext="au_fname" sortexpression="au_fname" datafield="au_fname" />
<asp:boundcolumn headertext="phone" sortexpression="phone" datafield="phone" />
<asp:boundcolumn headertext="address" sortexpression="address" datafield="address" />
<asp:boundcolumn headertext="city" sortexpression="city" datafield="city" />
<asp:boundcolumn headertext="state" sortexpression="state" datafield="state" />
<asp:boundcolumn headertext="zip" sortexpression="zip" datafield="zip" />
<asp:boundcolumn headertext="contract" sortexpression="contract" datafield="contract" />
</columns>
</asp:datagrid>
</form>
</body>



aspx.cs文件中加入下面代碼:
導(dǎo)入using system.data.sqlclient;
定義sqlconnection myconnection;
private void page_load(object sender, system.eventargs e)
{
myconnection = new sqlconnection("user id=sa;password=;initial catalog=pubs;data source=jeff");
if (!ispostback)
  bindgrid();
}



public void mydatagrid_edit(object sender, datagridcommandeventargs e)
{
datagrid1.edititemindex = (int)e.item.itemindex;
bindgrid();
}



public void mydatagrid_cancel(object sender, datagridcommandeventargs e)
{
datagrid1.edititemindex = -1;
bindgrid();
}



public void mydatagrid_update(object sender, datagridcommandeventargs e)
{
string updatecmd = "update authors set au_id = @id, au_lname = @lname, au_fname = @fname, phone = @phone, "
+ "address = @address, city = @city, state = @state, zip = @zip, contract = @contract where au_id = @id";
sqlcommand mycommand = new sqlcommand(updatecmd, myconnection);
mycommand.parameters.add(new sqlparameter("@id", sqldbtype.nvarchar, 11));
mycommand.parameters.add(new sqlparameter("@lname", sqldbtype.nvarchar, 40));
mycommand.parameters.add(new sqlparameter("@fname", sqldbtype.nvarchar, 20));
mycommand.parameters.add(new sqlparameter("@phone", sqldbtype.nchar, 12));
mycommand.parameters.add(new sqlparameter("@address", sqldbtype.nvarchar, 40));
mycommand.parameters.add(new sqlparameter("@city", sqldbtype.nvarchar, 20));
mycommand.parameters.add(new sqlparameter("@state", sqldbtype.nchar, 2));
mycommand.parameters.add(new sqlparameter("@zip", sqldbtype.nchar, 5));
mycommand.parameters.add(new sqlparameter("@contract", sqldbtype.nvarchar,1));
mycommand.parameters["@id"].value = datagrid1.datakeys[(int)e.item.itemindex];
string[] cols = {"@id","@lname","@fname","@phone","@address","@city","@state","@zip","@contract"};
int numcols = e.item.cells.count;
for (int i=2; i<numcols-1; i++) //跳過第一、第二和最后一列
{
  string colvalue =((textbox)e.item.cells[i].controls[0]).text;
  // 檢查在所需字段中是否有空值
  if (i<6 && colvalue == "")
  {
  message.text = "錯誤:“作者 id”、“姓名”或“電話”不允許使用空值";
  return;
  }
  mycommand.parameters[cols[i-1]].value = colvalue;
}



//追加最后一行,將 true/false 值轉(zhuǎn)換為 0/1
if (string.compare(((textbox)e.item.cells[numcols-1].controls[0]).text, "true", true)==0)
  mycommand.parameters["@contract"].value =  "1";
else
  mycommand.parameters["@contract"].value =  "0";
mycommand.connection.open();
try
{
  mycommand.executenonquery();
  message.text = "<b>已更新記錄</b><br>" + updatecmd;
  datagrid1.edititemindex = -1;
}
catch (sqlexception e)
{
  if (e.number == 2627)
   message.text = "錯誤:已存在具有相同主鍵的記錄";
  else
   message.text = "錯誤:未能更新記錄,請確保正確填寫了字段";
}



mycommand.connection.close();
bindgrid();
}
public void bindgrid()
{
sqldataadapter mycommand = new sqldataadapter("select * from authors", myconnection);
dataset ds = new dataset();
mycommand.fill(ds, "authors");
datagrid1.datasource=ds.tables["authors"].defaultview;
datagrid1.databind();
}
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 论坛| 巩义市| 西藏| 张家口市| 清苑县| 锡林浩特市| 调兵山市| 澄江县| 嵊州市| 尼玛县| 伊吾县| 葫芦岛市| 安远县| 治县。| 日喀则市| 丹寨县| 永顺县| 包头市| 乳山市| 星子县| 金坛市| 蒙阴县| 德阳市| 措美县| 正镶白旗| 巫山县| 遂宁市| 十堰市| 玉山县| 布拖县| 清原| 余江县| 东乡| 阳新县| 常熟市| 五莲县| 德阳市| 古丈县| 沾益县| 玉树县| 瑞丽市|