Я создаю веб-шаблон, используя asp.net и C #.
на моей странице управления пользователями я должен динамически создавать таблицу в представлении списка. Я просто читаю данные из файла XML, а затем извлекаю имя и количество столбцов и строк каждой таблицы. При создании таблицы я присваиваю имя и идентификатор каждой ячейке. В этой динамической таблице после того, как пользователь нажмет кнопку редактирования каждой строки, все ячейки этой строки изменятся на textbox
. тогда пользователь может изменить данные этого textboxes
,
но в моей функции обновления я не могу получить доступ к этим textboxes
по id
и сохранить данные в базе данных.
Ниже приведен мой код динамической таблицы, который создается в функции ItemDataBound
:
System.Data.DataRowView rowView = e.Item.DataItem as System.Data.DataRowView;
TableRow tr_DataBound = new TableRow();
TableCell tc_DataBound = new TableCell();
for (int i = 1; i <= pkCounter + nonPkCounter; i++)
{
//tc_DataBound = new TableCell();
tc_DataBound = new TableCell();
TextBox tb = new TextBox();
//(TextBox)e.Item.FindControl("td_EditTemp" + i);
tb.Width = 110;
tb.Text = rowView[i - 1].ToString();
tb.ID = "td_EditTemp" + i;
tc_DataBound.Controls.Add(tb);
tc_DataBound.CssClass = "th_ItemTemplate";
tr_DataBound.Cells.Add(tc_DataBound);
}
tr_DataBound.Cells.Add(tc_DataBound);
Table table_Lv_ItemTemplate = (Table)e.Item.FindControl("Table_Lv_ItemTemplate");
table_Lv_ItemTemplate.Rows.Add(tr_DataBound);
Мой listview
код:
<asp:ListView ID="lv_Uc_Module" runat="server"
onitemediting="lv_Uc_Module_ItemEditing"
onitemcanceling="lv_Uc_Module_ItemCanceling"
onitemdeleting="lv_Uc_Module_ItemDeleting"
OnItemDataBound="lv_Uc_Module_ItemDataBound"
OnSorting="lv_Uc_Module_Sorting">
<LayoutTemplate>
<asp:Table runat="server" ID="table_Lv_Layout">
<asp:TableRow runat="server" ID="tr_Table_Layout">
<asp:TableCell runat="server" ID="td_Table_Layout">
<asp:Table runat="server" ID="itemPlaceholderContainer">
<asp:TableRow runat="server" ID="tr_Table_IphContainer">
<asp:TableHeaderCell runat="server">
<asp:PlaceHolder ID="th_Ph_Lv_header" runat="server"></asp:PlaceHolder>
</asp:TableHeaderCell>
</asp:TableRow>
<asp:TableRow runat="server">
<asp:TableCell runat="server">
<asp:PlaceHolder runat="server" ID="itemPlaceholder" />
</asp:TableCell>
</asp:TableRow>
</asp:Table>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow runat="server" ID="tr_Validate_Table_Layout">
<asp:TableCell runat="server" ID="td_Validate_Table_Layout" HorizontalAlign="Center" BackColor="#CCCCCC">
<asp:ValidationSummary ID="ValidationSummary1" runat="server" HeaderText="You received the following errors:" ShowMessageBox="true" ShowSummary="false" ValidationGroup="VGEditTmp" />
</asp:TableCell>
</asp:TableRow>
</asp:Table>
<br />
<asp:DataPager ID="lv_DataPager" runat="server" PagedControlID="lv_Uc_Module" PageSize="25" OnPreRender="lv_DataPager_PreRender">
<Fields>
<asp:NextPreviousPagerField ButtonType="Image" ShowFirstPageButton="true" ShowLastPageButton="true" FirstPageImageUrl="~/Images/First.png" LastPageImageUrl="~/Images/Last.png" NextPageImageUrl="~/Images/Next.png" PreviousPageImageUrl="~/Images/Previous.png" />
<asp:TemplatePagerField>
<PagerTemplate>
<span style="color:Blue;">
</span>
</PagerTemplate>
</asp:TemplatePagerField>
</Fields>
</asp:DataPager>
</LayoutTemplate>
<ItemTemplate>
<asp:TableRow runat="server">
<asp:TableCell runat="server">
<asp:Table runat="server" ID="Table_Lv_ItemTemplate"></asp:Table>
</asp:TableCell>
<asp:TableCell runat="server">
<asp:Button ID="btn_Edit" runat="server" CommandName="Edit" Text="" CssClass="btn_Edit" CausesValidation="True" Visible="false" />
<asp:Button ID="btn_Delete" runat="server" CommandName="Delete" Text="" CssClass="btn_Delete" CausesValidation="false" OnClientClick="return confirm('Are you sure you want to delete this item?');" Visible="false" />
</asp:TableCell>
</asp:TableRow>
</ItemTemplate>
</asp:ListView>
Я использую метод ниже в моей функции обновления в коде для доступа к данным, измененным в textbox
:
TextBox tb = (lv_Uc_Module.Items[e].FindControl("td_EditTemp" + i + "_" + e)) as TextBox;
Не могли бы вы подсказать мне, как получить доступ к этим textboxes
данным.
Благодарим вас за внимание.