2009-08-09 50 views
0

我想在列表視圖中添加一個帶有值的複選框作爲數據庫記錄的ID,這樣我可以允許用戶檢查他們想要刪除的部分,以及他們何時單擊刪除按鈕我可以通過request.form獲取複選框的值集合。在列表視圖中設置HTML輸入複選框的名稱

我的問題是,因爲ListView中的複選框將listview名稱呈現到複選框的name屬性中,所以它阻止我執行request.form [「checkboxname」]。

我不想使用Listviews刪除命令,只是簡單地使用request.form來獲取選中值的集合。

如何設置htmlinput複選框的名稱,以便.NET在渲染時不更改它?

我曾嘗試:

 ListViewDataItem dataItem = (ListViewDataItem)e.Item; 
     HtmlInputCheckBox _CheckBoxDelete = (HtmlInputCheckBox)e.Item.FindControl("CheckBoxDelete"); 

      _CheckBoxDelete.Visible = true; 
      _CheckBoxDelete.Value = DataBinder.Eval(dataItem.DataItem, "id").ToString(); 
      _CheckBoxDelete.Name = "deletechecked"; 

但它仍然呈現這樣的:

<input name="PmList$ctrl0$CheckBoxDelete" type="checkbox" id="PmList_ctrl0_CheckBoxDelete" value="3" /> 

回答

0

我與整理出來:

string idCollectionTodelete = string.Empty; 

    foreach (string x in Request.Form) 
    { 
     if (x.IndexOf("CheckBoxDelete") > -1) 
     { 
      idCollectionTodelete += Request.Form[x] + ","; 
     } 

    } 
    new DB().DeleteUserPm(
     ActiveUsername(), subdomain, idCollectionTodelete.TrimEnd(',')); 

它不是一個理想的解決方案,但它爲我工作。

1

發生這種情況是因爲ListView是一個命名容器。您可以通過幾種方式解決此問題,但它們都歸結爲以下幾種選擇:

  • 呈現所需的HTML。
  • 以不同的方式拉出選中的項目。

前者是可行的,但您可能會失去很多ASP.NET的內置功能。除非您熟悉控制生命週期,否則我會建議您不要這樣做。

你有你需要的一切的拉動值出的方式ASP期待:

HtmlInputCheckBox _CheckBoxDelete = (HtmlInputCheckBox)item.FindControl("CheckBoxDelete"); 

你只需要等待填充控制層次,然後遍歷ListView控件。尋找複選框的項目。你的「刪除」按鈕的事件處理程序可能是一個很好的調用它的地方。

順便說一句,爲什麼你使用HtmlInputCheckbox,而不是CheckBox?

+0

我是新來asp.net和與對照exprimenting,我發現htmlinputs更易於管理。如果我使用asp複選框,我將不得不使用thbacks回發和事件,並且在此項目中使用request.form獲取數據使我的生活更容易 – nLL 2009-08-09 18:38:42

+0

夠公平。整個頁面/控制生命週期業務起初可能令人望而生畏,但一旦你瞭解它,它就非常強大。祝你好運! – 2009-08-09 22:12:08

0

我在我看來,這樣做

List<HtmlInputCheckBox> chkDeleteContacts = new List<HtmlInputCheckBox>(); 

    foreach (RepeaterItem item in rptrFamilyContacts.Items) 
    { 
     chkDeleteContacts.Add((HtmlInputCheckBox)item.FindControl("chkDeleteContact")); 
    } 

    foreach(HtmlInputCheckBox chkDeleteContact in chkDeleteContacts) 
    { 
     //Delete Contact 
     if(chkDeleteContact.Checked) 
      blnStatus = BusinessUtility.DeleteConsumerContact(LoginConsumerID, chkDeleteContact.Value); 
    } 

稍微容易

相關問題