0 Replies - 8687 Views - Last Post: 28 February 2012 - 01:06 AM Rate Topic: -----

#1 farmar290  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 5
  • Joined: 12-March 09

access textbox of dynamically creaed table inside the listview

Posted 28 February 2012 - 01:06 AM

actually i'm developing web template using asp.net and c#.
i have mainTemp.aspx page which is include usercontrol page. in my usercontrol i have a listview which in this listview i have to create dynamic table inside the ItemTemplate based on a XML file. my listview code including the ItemTemplate is:
<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>


as you can see at the listview ItemTemplate part i have put a with ID = "Table_Lv_ItemTemplate" which i create the dynamic table here.
i have put the dynamic table code at the ItemDataBound function as below:
protected void lv_Uc_Module_ItemDataBound(object sender, ListViewItemEventArgs e)
{
    if (tempDataBound == 0 && !"".Equals(hid_ChooseModule.Value))
    {
        XmlDocument xDocRead = new XmlDocument();
        xDocRead.Load(Server.MapPath("ModuleTemp.xml"));
        lv_Uc_Module_DataBind("");

        Table table_Lv_ItemTemplate = (Table)e.Item.FindControl("Table_Lv_ItemTemplate");
        table_Lv_ItemTemplate.Controls.Clear();
        //table_Lv_ItemTemplate.Dispose();

        tempDataBound++;
    }

    if (e.Item.ItemType == ListViewItemType.DataItem)
    {
        XmlDocument xDocRead = new XmlDocument();
        xDocRead.Load(Server.MapPath("ModuleTemp.xml"));
        string xModuleName = hid_ChooseModule.Value;
        XmlNode xColCounter;
        TableRow tr_DataBound = new TableRow();
        TableRow tr_Lv_Header = new TableRow();

        if (!"".Equals(hid_ChooseModule.Value))
        {
            xColCounter = xDocRead.SelectSingleNode("ModuleTemp/" + xModuleName + "/List");
        }
        else
        {
            xModuleName = xDocRead.SelectSingleNode("ModuleTemp").FirstChild.Name;
            xColCounter = xDocRead.SelectSingleNode("ModuleTemp/" + xModuleName + "/List");
        }
        int pkCounter = 0, nonPkCounter = 0, colCount = xColCounter.ChildNodes.Count;
        string[] primaryKey = new string[30];
        string[] nonPrimaryKey = new string[colCount + 1];

        for (int i = 1; i <= colCount; i++)
        {
            if (xDocRead.SelectSingleNode("ModuleTemp/" + xModuleName + "/Edit/TableColumn" + i).Attributes.GetNamedItem("IsPrimaryKey").Value == "Y")
            {
                primaryKey[pkCounter] = xDocRead.SelectSingleNode("ModuleTemp/" + xModuleName + "/Edit/TableColumn" + i).Attributes.GetNamedItem("Name").Value;
                pkCounter++;
            }
            else
            {
                nonPrimaryKey[nonPkCounter] = xDocRead.SelectSingleNode("ModuleTemp/" + xModuleName + "/Edit/TableColumn" + i).Attributes.GetNamedItem("Name").Value;
                nonPkCounter++;
            }
        }

        System.Data.DataRowView rowView = e.Item.DataItem as System.Data.DataRowView;
        TableCell tc_Lv_Header = new TableCell();
        if (!"".Equals(hid_ChooseModule.Value))
        {
            if (tempHeader == 0)
            {
                tempHeader++;
                for (int i = 1; i <= pkCounter + nonPkCounter; i++)
                {
                    tc_Lv_Header = new TableCell();
                    Label lb = new Label();

                    if (i <= pkCounter)
                    {
                        lb.Text = primaryKey[i - 1];
                    }
                    else
                    {
                        lb.Text = nonPrimaryKey[i - pkCounter - 1];
                    }

                    lb.ID = "lb" + i + "_Table_IphContainer";
                    tc_Lv_Header.Controls.Add(lb);
                    tc_Lv_Header.CssClass = "th_ItemTemplate";
                    tr_Lv_Header.Cells.Add(tc_Lv_Header);
                }

                tr_Lv_Header.Cells.Add(tc_Lv_Header);

                table_Header.Rows.Add(tr_Lv_Header);
                PlaceHolder th_Ph_Lv_Hedear = (PlaceHolder)lv_Uc_Module.FindControl("th_Ph_Lv_header");
                th_Ph_Lv_Hedear.Controls.Add(table_Header);
            }
        }
        TableCell tc_DataBound = new TableCell();

        if (editTempSelection == e.Item.DataItemIndex)
        {
            for (int i = 1; i <= pkCounter + nonPkCounter; i++)
            {
                tc_DataBound = new TableCell();
                TextBox tb = new TextBox();
                tb.Width = 110;
                tb.Text = rowView[i - 1].ToString();
                tb.ID = "td_EditTemp" + i + "_" + e.Item.DataItemIndex;
                tc_DataBound.Controls.Add(tb);
                tc_DataBound.CssClass = "td_Tb_ItemTemplate";
                tr_DataBound.Cells.Add(tc_DataBound);
            }
        }
        else
        {
            for (int i = 1; i <= pkCounter + nonPkCounter; i++)
            {
                tc_DataBound = new TableCell();
                Label lb = new Label();
                lb.Text = rowView[i - 1].ToString();
                lb.ID = "lb_ItemTemp" + i + "_" + e.Item.DataItemIndex;
                tc_DataBound.Controls.Add(lb);
                tc_DataBound.CssClass = "td_Lb_ItemTemplate";
                tr_DataBound.Cells.Add(tc_DataBound);
            }
        }
        // add button to the columns
        if (editTempSelection != e.Item.DataItemIndex)
        {
            tc_DataBound = new TableCell();
            Button btn_Edit = new Button();
            btn_Edit.ID = "btn_Edit";
            btn_Edit.CommandName = "Edit";
            btn_Edit.CssClass = "btn_Edit";
            btn_Edit.CausesValidation = true;
            tc_DataBound.Controls.Add(btn_Edit);
            tr_DataBound.Cells.Add(tc_DataBound);

            tc_DataBound = new TableCell();
            Button btn_Delete = new Button();
            btn_Delete.ID = "btn_Delete";
            btn_Delete.CommandName = "Delete";
            btn_Delete.CssClass = "btn_Delete";
            btn_Delete.CausesValidation = false;
            btn_Delete.OnClientClick = "return confirm('Are you sure you want to delete this item?');";
            tc_DataBound.Controls.Add(btn_Delete);
            tr_DataBound.Cells.Add(tc_DataBound);
        }
        else
        {
            tc_DataBound = new TableCell();
            Button btn_Update = new Button();
            btn_Update.ID = "btn_Update";
            btn_Update.CommandName = "Update";
            btn_Update.CssClass = "btn_Update";
            btn_Update.ValidationGroup = "VGEditTmp";
            tc_DataBound.Controls.Add(btn_Update);
            tr_DataBound.Cells.Add(tc_DataBound);

            tc_DataBound = new TableCell();
            Button btn_Cancel = new Button();
            btn_Cancel.ID = "btn_Cancel";
            btn_Cancel.CommandName = "Cancel";
            btn_Cancel.CssClass = "btn_Cancel";
            btn_Cancel.CausesValidation = false;
            tc_DataBound.Controls.Add(btn_Cancel);
            tr_DataBound.Cells.Add(tc_DataBound);
            tr_DataBound.CssClass = "tr_Edit_ItemTemplate";
        }

        if (editTempSelection == e.Item.DataItemIndex)
        {
            lv_Uc_Module_ItemUpdating(sender, e.Item.DataItemIndex);
        }
        // add columns to the row
        tr_DataBound.Cells.Add(tc_DataBound);
        Table table_Lv_ItemTemplate = (Table)e.Item.FindControl("Table_Lv_ItemTemplate");
        table_Lv_ItemTemplate.Rows.Add(tr_DataBound);
    }
}


the result of this data bound is Sample.jpg image. and it dynamically read the data from XML file and create the table.

once the users click on the edit button as Sample2.jpg image, they can edit the row data.

the problem is here, that i can not access to these textboxes to get their data and update the data base. and i can not delete the rows.
i have tried TextBox tempLabelLv = (TextBox)add_Table.FindControl("td_EditTemp2_5"); the add_Table is my dynamic table id and i have tried TextBox tempLabelLv = (TextBox)lv_Uc_Module.FindControl("td_EditTemp2_5"); that lv_Uc_Module is my listview id. but still i can not access to these textboxes.
could you please guide me how to overcome this problem, and get the data of these textboxes to update the database.
appreciate your consideration.

Attached image(s)

  • Attached Image
  • Attached Image


Is This A Good Question/Topic? 0
  • +

Page 1 of 1