यहां एक त्वरित नकली बात है कि मैंने अतीत में ऐसा कैसे किया है।
<asp:Repeater id="repeater1" runat="server" OnItemDataBound="repeater1_OnItemDataBound" >
<ItemTemplate>
<asp:CheckBox ID="chk" runat="server" OnCheckedChanged="Check_Changed" AutoPostBack="true" />
</ItemTemplate>
</asp:Repeater>
codebehind:
public class Model {
public int Id { get; set; }
public string Name { get; set; }
}
public partial class Checkboxes : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {
if(!IsPostBack) {
repeater1.DataSource = new List<Model> {
new Model { Id = 1, Name = "a" },
new Model { Id = 2, Name = "b" },
new Model { Id = 3, Name = "c" } };
repeater1.DataBind();
}
}
protected void repeater1_OnItemDataBound(Object sender, RepeaterItemEventArgs e) {
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) {
var item = e.Item.DataItem as Model;
if (item != null) {
var chk = e.Item.FindControl("chk") as CheckBox;
if (chk != null) {
chk.Text = item.Name;
chk.InputAttributes.Add("value", item.Id.ToString());
}
}
}
}
protected void Check_Changed(Object sender, EventArgs e) {
var id = ((CheckBox) sender).InputAttributes["value"];
//you now have access to the item id and can manipulate at will.
}
}
स्रोत
2010-08-25 14:41:46
धन्यवाद इस काम करना चाहिए। इच्छा है कि रास्ते के बारे में एक कम दौर था ... +1 – Jason
यह इस बात पर निर्भर करता है कि आप डेटा के साथ क्या करने की कोशिश कर रहे हैं। यदि यह एक पंक्ति के लिए एक साधारण डेटाबेस ध्वज अद्यतन है, तो JQuery के माध्यम से जुड़ा हुआ AJAX कॉलबैक एक बेहतर और क्लीनर दृष्टिकोण होगा। वास्तव में, यह शायद एक क्लीनर दृष्टिकोण है, इससे कोई फर्क नहीं पड़ता कि आप डेटा के साथ क्या कर रहे हैं। यह उपयोगकर्ताओं को पोस्टबैक के बिना एकाधिक चेकबॉक्स बदलने की अनुमति देगा। –
यही वह है जो मैंने कर दिया। हालांकि नकली के लिए धन्यवाद। यह स्पष्ट रूप से सचित्र है कि यह JQuery दिशा में मुझे कितना जटिल और प्रेरित किया गया था। = डी – Jason