更新和取消按鈕無法正常工作,這些按鈕是出方在GridView的GridView編輯更新的行刪除通過單擊Asp.net
情景: 使用默認的asp.net gridview的設計的問題是, GridView編輯列總是佔用一些屏幕空間。此外,在編輯模式下,GridView會橫向擴展以擾亂頁面佈局。 that`s爲什麼我要呈現一個可編輯的GridView不顯示默認的編輯,更新和取消按鈕
例子:
什麼,我已經做了
時你會看到Gridview的html源代碼,你會發現下面的編輯,更新,取消鏈接按鈕,帶有一個名爲dopostback的事件
e.g
<a href="javascript:__doPostBack(ctl00$ContentPlaceHolder1$GridView2;Edit${1};)">Edit</a>
如果你以某種方式產生相同的上面的腳本並執行它的一些客戶端事件(例如點擊按鈕),那麼你基本上可以發送相同的命令,GridView控件。這樣做最簡單的方法是處理GridView控件的RowDataBound事件,所以我決定把它用在GridView控件的RowDataBound事件,如下圖所示:現在
protected void GridView2_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (e.Row.RowIndex == GridView2.EditIndex)
{
//update or cancel buttons
LinkButton updateBtn = (LinkButton)e.Row.Cells[0].Controls[0];
string updateScript = ClientScript.GetPostBackClientHyperlink(updateBtn, "");
Button1.Attributes["onclick"] = updateScript;
string cancelScript = string.Format("javascript:__doPostBack('ctl00$ContentPlaceHolder1$GridView2','Cancel${1}')",
GridView1.ID, e.Row.RowIndex);
Button2.Attributes["onclick"] = cancelScript;
}
else
{
//edit button
string editScript = string.Format("javascript:__doPostBack('ctl00$ContentPlaceHolder1$GridView2','Edit${1}')",
GridView1.ID, e.Row.RowIndex);
e.Row.Attributes["onclick"] = editScript;
}
}
if (GridView2.EditIndex >= 0)
{
Button1.Enabled = true;
Button2.Enabled = true;
}
else
{
Button1.Enabled = false;
Button2.Enabled = false;
}
}
當我在GridView中的任何行點擊它會成爲一個可編輯的行,應取消和更新通過取消和更新按鈕,這是在gridview外,但他們不工作...
任何幫助或建議,將不勝感激。
注:仍然需要包括編輯,更新,在GridView的取消LinkButton的,你可以從使用腳本像下面的jquery gridview的後面隱藏..
如
$(document).ready(function() {
$("#GridView2 th:first-child").hide();
$("#GridView2 td:first-child").hide();
});
你處理'OnRowCancelingEdit','在GridView的OnRowUpdating'事件? – Hassan
@HassanNisar不,我不是我只是處理編輯,更新的dopostback事件的Genrated事件和刪除的LinkButton 編輯按鈕的__doPostBack()調用的形式編輯需要在GridView的ID作爲第一個參數和行號作爲第二個參數$。 Update按鈕的__doPostBack()調用將第一個參數作爲控件的唯一標識。 Cancel按鈕的__doPostBack()頗爲相似,編輯按鈕除了不是編輯使用的命令名稱是取消 –
請遠離直接調用__doPostBack了,這是一個可怕的黑客,因爲doPostback有是有原因的下劃線(應被認爲是私密的)。我會盡快發佈一個應該有所幫助的答案。 – julealgon