mchenrr
July 21st, 2005, 04:13 PM
I have created a datalist to perform CRUD functions. I can add and delete just fine, but getting the text from the textboxes and dropdownlist in the datalist edit mode is a problem. I have experience doing this in VB.Net but this is the first time I've tried it in C#. The textbox text being returned is the original text bound to the control in the edititem template. Here is my code for that process and the datalist...
void Update_Command (object s, DataListCommandEventArgs e)
{
string bName, bShortName, bDesc;
int bID, bComments, bMaxComments, bPublic, bIncludeSearch, bDefCat;
bName = ((TextBox)e.Item.FindControl("txtName")).Text;
bShortName = ((TextBox)e.Item.FindControl("txtShortName")).Text;
bDesc = ((TextBox)e.Item.FindControl("txtDesc")).Text;
bID = Convert.ToInt32(((Label)e.Item.FindControl("lblID")).Text);
bComments = Convert.ToInt32(((TextBox)e.Item.FindControl("txtComments")).Text);
bMaxComments = Convert.ToInt32(((TextBox)e.Item.FindControl("txtMaxComments")).Text);
bPublic = Convert.ToInt32(((TextBox)e.Item.FindControl("txtPublic")).Text);
bIncludeSearch = Convert.ToInt32(((TextBox)e.Item.FindControl("txtIncludeSearch")).Text);
bDefCat = Convert.ToInt32(((DropDownList)e.Item.FindControl("ddlDefCat")).SelectedValue);
DataRowView drv = dvBlog[e.Item.ItemIndex];
drv.BeginEdit();
drv["bName"] = bName;
drv["bShortName"] = bShortName;
drv["bDesc"] = bDesc;
drv["bComments"] = bComments;
drv["bMaxComments"] = bMaxComments;
drv["bPublic"] = bPublic;
drv["bIncludeSearch"] = bIncludeSearch;
drv["bDefCat"] = bDefCat;
drv.EndEdit();
odbcCB.DataAdapter = daBlog;
odbcCB.RefreshSchema();
daBlog.Update(dsBlog, "tblblog");
dlBlogs.EditItemIndex = -1;
BindData();
lblMessage.Text = "Updated Blog: " + bName;
}
//Datalist code
<asp:datalist ID="dlBlogs"
OnEditCommand="Edit_Command"
OnCancelCommand="Cancel_Command"
OnUpdateCommand="Update_Command"
OnDeleteCommand="Delete_Command"
OnItemDataBound="Item_DataBound"
runat="server">
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
<table width="100%">
<tr>
<td>
<%# DataBinder.Eval(Container.DataItem, "bName") %>
</td>
<td>
<asp:linkbutton ID="lnkEditBlog" CommandName="Edit"
Text="Edit Blog" runat="server" />
</td>
<td>
<asp:linkbutton ID="lnkDeleteBlog" CommandName="Delete"
Text="Delete Blog" runat="server" />
</td>
</tr>
</table>
</ItemTemplate>
<EditItemTemplate>
<table width="100%">
<tr>
<td>
<asp:label Text="Name" runat="server" />
</td>
<td>
<asp:textbox ID="txtName"
Text='<%# DataBinder.Eval(Container.DataItem, "bName") %>' Columns="25" runat="server" />
<asp:label ID="lblID" Visible="false" Text='<%# DataBinder.Eval(Container.DataItem, "bID") %>'
runat="server" />
</td>
<td>
<asp:label Text="Short Name" runat="server" />
</td>
<td>
<asp:textbox ID="txtShortName"
Text='<%# DataBinder.Eval(Container.DataItem, "bShortName") %>' Columns="16" runat="server" />
</td>
</tr>
<tr>
<td>
<asp:label Text="Description" runat="server" />
</td>
<td colspan="3">
<asp:textbox ID="txtDesc"
Text='<%# DataBinder.Eval(Container.DataItem, "bDesc") %>' Columns="45"
Rows="5" Wrap="true" TextMode="MultiLine" runat="server" />
</td>
</tr>
<tr>
<td>
<asp:label Text="Comments" runat="server" />
</td>
<td>
<asp:textbox ID="txtComments"
Text='<%# DataBinder.Eval(Container.DataItem, "bComments") %>' Columns="1"
MaxLength="1" runat="server" />
</td>
<td>
<asp:label Text="Max Comments" runat="server" />
</td>
<td>
<asp:textbox ID="txtMaxComments"
Text='<%# DataBinder.Eval(Container.DataItem, "bMaxComments") %>' Columns="3"
runat="server" />
</td>
</tr>
<tr>
<td>
<asp:label Text="Public" runat="server" />
</td>
<td>
<asp:textbox ID="txtPublic"
Text='<%# DataBinder.Eval(Container.DataItem, "bPublic") %>' Columns="1"
MaxLength="1" runat="server" />
</td>
<td>
<asp:label Text="Include Search" runat="server" />
</td>
<td>
<asp:textbox ID="txtIncludeSearch"
Text='<%# DataBinder.Eval(Container.DataItem, "bIncludeSearch") %>' Columns="1"
MaxLength="1" runat="server" />
</td>
</tr>
<tr>
<td>
<asp:label Text="Default Category" runat="server" />
</td>
<td>
<asp:dropdownlist ID="ddlDefCat" runat="server" />
</td>
<td>
<asp:linkbutton ID="lnkUpdateBlog" CommandName="Update"
Text="Update Blog" runat="server" />
</td>
<td>
<asp:linkbutton ID="lnkCancelBlog" CommandName="Cancel"
Text="Cancel" runat="server" />
</td>
</tr>
</table>
</EditItemTemplate>
<FooterTemplate>
<table width="100%">
<tr>
<td>
<asp:linkbutton ID="lnkAddBlog" Text="Add Blog"
OnClick="ToggleAddMode" runat="server" />
</td>
</tr>
</table>
</FooterTemplate>
</asp:datalist>
void Update_Command (object s, DataListCommandEventArgs e)
{
string bName, bShortName, bDesc;
int bID, bComments, bMaxComments, bPublic, bIncludeSearch, bDefCat;
bName = ((TextBox)e.Item.FindControl("txtName")).Text;
bShortName = ((TextBox)e.Item.FindControl("txtShortName")).Text;
bDesc = ((TextBox)e.Item.FindControl("txtDesc")).Text;
bID = Convert.ToInt32(((Label)e.Item.FindControl("lblID")).Text);
bComments = Convert.ToInt32(((TextBox)e.Item.FindControl("txtComments")).Text);
bMaxComments = Convert.ToInt32(((TextBox)e.Item.FindControl("txtMaxComments")).Text);
bPublic = Convert.ToInt32(((TextBox)e.Item.FindControl("txtPublic")).Text);
bIncludeSearch = Convert.ToInt32(((TextBox)e.Item.FindControl("txtIncludeSearch")).Text);
bDefCat = Convert.ToInt32(((DropDownList)e.Item.FindControl("ddlDefCat")).SelectedValue);
DataRowView drv = dvBlog[e.Item.ItemIndex];
drv.BeginEdit();
drv["bName"] = bName;
drv["bShortName"] = bShortName;
drv["bDesc"] = bDesc;
drv["bComments"] = bComments;
drv["bMaxComments"] = bMaxComments;
drv["bPublic"] = bPublic;
drv["bIncludeSearch"] = bIncludeSearch;
drv["bDefCat"] = bDefCat;
drv.EndEdit();
odbcCB.DataAdapter = daBlog;
odbcCB.RefreshSchema();
daBlog.Update(dsBlog, "tblblog");
dlBlogs.EditItemIndex = -1;
BindData();
lblMessage.Text = "Updated Blog: " + bName;
}
//Datalist code
<asp:datalist ID="dlBlogs"
OnEditCommand="Edit_Command"
OnCancelCommand="Cancel_Command"
OnUpdateCommand="Update_Command"
OnDeleteCommand="Delete_Command"
OnItemDataBound="Item_DataBound"
runat="server">
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
<table width="100%">
<tr>
<td>
<%# DataBinder.Eval(Container.DataItem, "bName") %>
</td>
<td>
<asp:linkbutton ID="lnkEditBlog" CommandName="Edit"
Text="Edit Blog" runat="server" />
</td>
<td>
<asp:linkbutton ID="lnkDeleteBlog" CommandName="Delete"
Text="Delete Blog" runat="server" />
</td>
</tr>
</table>
</ItemTemplate>
<EditItemTemplate>
<table width="100%">
<tr>
<td>
<asp:label Text="Name" runat="server" />
</td>
<td>
<asp:textbox ID="txtName"
Text='<%# DataBinder.Eval(Container.DataItem, "bName") %>' Columns="25" runat="server" />
<asp:label ID="lblID" Visible="false" Text='<%# DataBinder.Eval(Container.DataItem, "bID") %>'
runat="server" />
</td>
<td>
<asp:label Text="Short Name" runat="server" />
</td>
<td>
<asp:textbox ID="txtShortName"
Text='<%# DataBinder.Eval(Container.DataItem, "bShortName") %>' Columns="16" runat="server" />
</td>
</tr>
<tr>
<td>
<asp:label Text="Description" runat="server" />
</td>
<td colspan="3">
<asp:textbox ID="txtDesc"
Text='<%# DataBinder.Eval(Container.DataItem, "bDesc") %>' Columns="45"
Rows="5" Wrap="true" TextMode="MultiLine" runat="server" />
</td>
</tr>
<tr>
<td>
<asp:label Text="Comments" runat="server" />
</td>
<td>
<asp:textbox ID="txtComments"
Text='<%# DataBinder.Eval(Container.DataItem, "bComments") %>' Columns="1"
MaxLength="1" runat="server" />
</td>
<td>
<asp:label Text="Max Comments" runat="server" />
</td>
<td>
<asp:textbox ID="txtMaxComments"
Text='<%# DataBinder.Eval(Container.DataItem, "bMaxComments") %>' Columns="3"
runat="server" />
</td>
</tr>
<tr>
<td>
<asp:label Text="Public" runat="server" />
</td>
<td>
<asp:textbox ID="txtPublic"
Text='<%# DataBinder.Eval(Container.DataItem, "bPublic") %>' Columns="1"
MaxLength="1" runat="server" />
</td>
<td>
<asp:label Text="Include Search" runat="server" />
</td>
<td>
<asp:textbox ID="txtIncludeSearch"
Text='<%# DataBinder.Eval(Container.DataItem, "bIncludeSearch") %>' Columns="1"
MaxLength="1" runat="server" />
</td>
</tr>
<tr>
<td>
<asp:label Text="Default Category" runat="server" />
</td>
<td>
<asp:dropdownlist ID="ddlDefCat" runat="server" />
</td>
<td>
<asp:linkbutton ID="lnkUpdateBlog" CommandName="Update"
Text="Update Blog" runat="server" />
</td>
<td>
<asp:linkbutton ID="lnkCancelBlog" CommandName="Cancel"
Text="Cancel" runat="server" />
</td>
</tr>
</table>
</EditItemTemplate>
<FooterTemplate>
<table width="100%">
<tr>
<td>
<asp:linkbutton ID="lnkAddBlog" Text="Add Blog"
OnClick="ToggleAddMode" runat="server" />
</td>
</tr>
</table>
</FooterTemplate>
</asp:datalist>