1、第一個DataList控制項放入兩個Label控制項,一個聯結job_id欄位,一個聯結job_desc欄位。
2、第二個DataList控制項放入一個CheckBox控制項、一個Label控制項和一個TextBox控制項,Label控制項聯結job_id欄位,TextBox控制項聯結job_desc欄位。
3、當使用者點選[修改]按鈕,每一筆資料都展現成TextBox,只要將DataList1隱藏,DataList2展現即可。
4、利用Client端Script的技術,來判斷哪幾筆資料被修改過了(只要修改TextBox的值,在LoseFocus的時候CheckBox就會自動打勾)
<asp:TextBox id=TextBox1 runat="server"
οnchange="javascript:this.parentElement.children(0).checked=true;"
Text='<%#DataBinder.Eval(Container,"DataItem.job_desc")%>'
Width="300px">
</asp:TextBox>
5、[儲存]事件:
private void Button2_Click(object sender, System.EventArgs e)
{
sqlConnection1.Open();
SqlCommand cmd=new SqlCommand("update jobs set job_desc=@job_desc where job_id=@job_id",sqlConnection1);
cmd.Parameters.Add(new SqlParameter("@job_id",SqlDbType.SmallInt,2));
cmd.Parameters.Add(new SqlParameter("@job_desc",SqlDbType.VarChar,50));
foreach(DataListitem item in DataList2.Items)
{
CheckBox cb=(CheckBox)item.Controls[1];
if(cb.Checked)
{
Label lbl=(Label)item.Controls[3];
TextBox txt=(TextBox)item.Controls[5];
cmd.Parameters["@job_id"].Value=lbl.Text;
cmd.Parameters["@job_desc"].Value=txt.Text;
}
}
}