2012-10-09 94 views
0

在我的Asp項目中,我的GridView中有一個單選按鈕。單選按鈕只允許用戶每次選擇一次。確認GridView事件中的單選按鈕不會觸發

但是,當用戶單擊單選按鈕時,將出現一條確認消息,並且只有當用戶單擊「確定」時纔會保存該記錄。

一切正常,但現在我面臨一個問題。當用戶單擊「確定」時,單選按鈕oncheckedchanged似乎不會觸發。一旦用戶點擊「確定」,我如何才能觸發單選按鈕事件?

這裏是我的代碼: 的Javascript

function RadioCheck(rb) { 
    var gv = document.getElementById('Content_PageContent_ucSubMenuItem_module_sales_customer_submenuitem_contactpersonlist_ascx_gvContactPersonList');var rbs = gv.getElementsByTagName("input"); 
    for (var i = 0; i < rbs.length; i++) { 
     if (rbs[i].type == "radio") { 
      //if radio button is check but not the selected value then false 
      if (rbs[i].checked && rbs[i] != rb) { 
       rbs[i].checked = false; 
       break; 
      } 
     } 
    } 
    return confirm('Confirm Save?'); 

} 

客戶端

<asp:TemplateField HeaderText="Default" ItemStyle-HorizontalAlign="Center"> 
    <ItemTemplate> 
     <asp:RadioButton ID="rdbtnDefault" runat="server" onclick="RadioCheck(this);" oncheckedchanged="rdbtnDefault_CheckedChanged" Visible='<%#((string)Eval("DEFAULT")) == "Y" ? false : true %>'/> 
     <asp:Image ID="imgDefault" runat="server" Height="13px" ImageUrl="~/Styles/images/tick-48x48.png" Width="13px" Visible='<% ((string)Eval("DEFAULT")) == "Y" ? true : false %>' /> 
    </ItemTemplate> 

服務器端

//--Register for in post back-- 
if (Page.ClientScript.IsClientScriptBlockRegistered(DataUCContactListing) == false) { 
    ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "gvRdBtnSelectOnce", blcGenerateScript.gvRdBtnSelectOnce(gvContactPersonList.ClientID,true), true); 
    ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "gvSelectAllChkBox", blcGenerateScript.gvSelectAllChkBox(gvContactPersonList.ClientID), true); 
} 

//**Register for script** 
protected void rdbtnDefault_CheckedChanged(object sender, EventArgs e) { 
    try { 
     RadioButton lnBTNDone = (RadioButton)sender; 
     GridViewRow row = (GridViewRow)lnBTNDone.NamingContainer; 
     string accountID = gvContactPersonList.DataKeys[row.RowIndex].Values[0].ToString(); 
     int contactID = int.Parse(gvContactPersonList.DataKeys[row.RowIndex].Values[1].ToString()); 
     using (TransactionScope scope = new TransactionScope()) { 
      dlcCustomerDB.updateAccountOtherDefaultN(accountID); 
      dlcCustomerDB.updateAccountDefaultY(accountID, contactID); 
      scope.Complete(); 
     } 
     createGridView(); 
     this.Session[gbcMessageSessionID.message1] = gbcMessageAlert.saveSuccessfully; 
     Response.Redirect(Request.Url.ToString()); 
    } catch (Exception ex) { 
     logger.Error(ex.Message); 
     throw; 
    } 
} 
+0

當用戶點擊「確定」按鈕時頁面回發? – ravidev

+0

No.Seem它不會觸發服務器端事件 – user998405

+0

你有沒有設置AutoPostBack爲true? – ravidev

回答

0

查找到以下網址

http://www.asp.net/web-forms/tutorials/data-access/enhancing-the-gridview/adding-a-gridview-column-of-radio-buttons-vb
Radiobutton checked change event not firing in gridview
請看看這個代碼

<asp:RadioButton ID="rdbtnDefault" runat="server" onclick="return RadioCheck(this);" oncheckedchanged="rdbtnDefault_CheckedChanged" Visible='<%#((string)Eval("DEFAULT")) == "Y" ? false : true %>' AutoPostBack="True" /> 

我已經添加了單選按鈕的onclick事件的 「迴歸」 的關鍵字。

+0

你試過了嗎?我試試阿迪。但仍然無法啓動服務器端事件 – user998405

+0

請將AutoPostBack設置爲True – ravidev

+0

我嘗試將Auto post設置回true。無論用戶點擊確定還是取消,它也會觸發服務器端事件。我只想在用戶點擊ok確認消息框時保存記錄 – user998405

相關問題