TECHNOLOGIES
FORUMS
JOBS
BOOKS
EVENTS
INTERVIEWS
Live
MORE
LEARN
Training
CAREER
MEMBERS
VIDEOS
NEWS
BLOGS
Sign Up
Login
No unread comment.
View All Comments
No unread message.
View All Messages
No unread notification.
View All Notifications
Answers
Post
An Article
A Blog
A News
A Video
An EBook
An Interview Question
Ask Question
Forums
Monthly Leaders
Forum guidelines
Damian Clem
NA
3
2.1k
Using Repeater and Capturing Items Information
Jan 3 2012 4:10 PM
I'm really new to ASP.NET and C# so please bare with me. I have the following source code that builds a repeater control using data from a database. The repeater is "building" a set of user controls like CheckBoxes, Input and DropDown Lists.
The repeater information gets created on Page_PreRender(); The repeater is loading in fine and the controls are getting rendered correctly on the page. My Problem is I want to capture the data from the items in the repeater so I can save the information back to the database? I have a foreach loop that "should" loop through all the repeater items and grab the data as needed. For some reason it's not working?
When I debug the source code the items are showing in the Repeater Object and in the foreach Repeater Object. But in the FindControl() (in the Repeater loop) it's coming back with a Null Reference. Why would this be happening? What could I be doing wrong?
Thanks in advance!
foreach (RepeaterItem item in rptUserDefFields.Items)
{
if (item.ItemType == ListItemType.AlternatingItem || item.ItemType == ListItemType.Item)
{
CheckBox chb = (CheckBox)item.FindControl("chkBox");
if (chb.Checked)
{
Debug.WriteLine("I have the following IDs: " + chb.Checked);
}
}
}
rptUserDefFields.ItemCreated += new RepeaterItemEventHandler(rptUserDefFields_ItemCreated);
GetUserDefFields();
protected void GetUserDefFields()
{
using (CRMDataContext CRM = new CRMDataContext())
{
UserDefFields = (from EventUserDefinedField f in CRM.EventUserDefinedFields
where f.nID == EventID
select f).ToList<EventUserDefinedField>();
}
List<UserDefObject> MyFieldsFormatted = new List<UserDefObject>();
List<String> fieldNames = (from EventUserDefinedField u in UserDefFields
select u.FieldName).Distinct().ToList<String>();
foreach (string fname in fieldNames)
{
List<EventUserDefinedField> groupedField = (from EventUserDefinedField u in UserDefFields
where u.FieldName == fname
select u).ToList<EventUserDefinedField>();
switch (groupedField[0].FieldType)
{
//For text boxes, we need to create the text box control
//and add it to a new UserDefField, which we then add to
//the MyFieldsFormatted list.
case "Text Box":
TextBox txtF = new TextBox();
txtF.Width = Unit.Pixel(250);
txtF.MaxLength = 250;
txtF.ID = "txtBox";
MyFieldsFormatted.Add(new UserDefObject(groupedField[0].FieldName, groupedField[0].FieldType, txtF, groupedField[0].IsRequired));
break;
//For check boxes, we need to create the check box control
//and add it to a new UserDefField, which we then add to
//the MyFieldsFormatted list.
case "Check Box":
CheckBox cbF = new CheckBox();
cbF.ID = "chkBox";
MyFieldsFormatted.Add(new UserDefObject(groupedField[0].FieldName, groupedField[0].FieldType, cbF, groupedField[0].IsRequired));
break;
//For drop downs, we need to loop through the groupedField
//list, and add the ListItemValues to a DropDownList control
//and then add it to a new UserDefField, which will be added
//the MyFieldsFormatted list.
case "Drop Down":
DropDownList ddlF = new DropDownList();
ddlF.ID = "ddl";
foreach (EventUserDefinedField g in groupedField)
{
ddlF.Items.Add(new ListItem(g.ListItemValue));
}
MyFieldsFormatted.Add(new UserDefObject(groupedField[0].FieldName, groupedField[0].FieldType, ddlF, groupedField[0].IsRequired));
break;
//For cbls, we need to loop through the groupedField
//list, and add the ListItemValues to a CheckBoxList control
//and then add it to a new UserDefField, which will be added
//the MyFieldsFormatted list.
case "Check Box List":
CheckBoxList cblF = new CheckBoxList();
foreach (EventUserDefinedField g in groupedField)
{
cblF.Items.Add(new ListItem(g.ListItemValue));
}
MyFieldsFormatted.Add(new UserDefObject(groupedField[0].FieldName, groupedField[0].FieldType, cblF, groupedField[0].IsRequired));
break;
}
}
rptUserDefFields.DataSource = MyFieldsFormatted;
rptUserDefFields.DataBind();
}
void rptUserDefFields_ItemCreated(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
UserDefObject MyField = (UserDefObject)e.Item.DataItem;
Literal litOpen = new Literal();
litOpen.Text = "<tr class=\"userDefinedQ\"><th>";
e.Item.Controls.Add(litOpen);
Label lblFieldName = new Label();
lblFieldName.ID = MyField.userFieldType;
lblFieldName.Text = MyField.userFieldName;
e.Item.Controls.Add(lblFieldName);
Literal litMiddle = new Literal();
litMiddle.Text = "</th><td>";
e.Item.Controls.Add(litMiddle);
e.Item.Controls.Add(MyField.userField);
Literal litClose = new Literal();
litClose.Text = "</td></tr>";
}
}
}
Reply
Answers (
1
)
Help with loop
Yet another problem with LOOPS