Как прочитать динамически добавленное значение texbox в gridview - PullRequest
1 голос
/ 14 июня 2019

Мне нужно создать динамическую форму , для которой мне потребуется создать текстовое поле, текстовое поле, раскрывающийся список и т. Д. на основе типа поля.

ТеперьЯ успешно создал это динамическое текстовое поле и т. Д., Используя мою границу строки.

Моя проблема в том, что я не смог получить значение текстового поля, введенное при нажатии кнопки сохранения.

Мой файл aspx

                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:CheckBox runat="server" ID="selectProspect" Checked="true" />
                    </ItemTemplate>
                </asp:TemplateField>

                <asp:BoundField DataField="FieldTitle" HeaderText="" />
                <asp:BoundField DataField="FieldType" HeaderText="FieldType" />
                <asp:TemplateField>
                    <ItemTemplate>
                     //DYNAMICALLY ADDING TEXTBOX

                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="RightText" HeaderText="" />
                <asp:BoundField DataField="TemplatesInfoCode" HeaderText="TemplatesInfoCode" ItemStyle-CssClass="hiddencol" />
            </Columns>
        </asp:GridView>

Мой код файла

protected void Page_Load(object sender, EventArgs e)
{
    GetTemplateComponent();

}


public void GetTemplateComponent()
{
    StringBuilder sb;
    DataSet ds;


    sb = new StringBuilder();
    sb.AppendLine("select * from template where tc='0002' order by Sequence");
    ds = Conn.DataAdapter(CommandType.Text, sb.ToString());

    gv.DataSource = ds;
    gv.DataBind();
}

protected void gv_OnRowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        string value = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "FieldType"));

        if (value == "Date" || value == "TextBox")
        {


            TextBox TextBox1 = new TextBox() { ID = "TextBox1", EnableViewState = false, CssClass = "form-control" };
            e.Row.Cells[3].Controls.Add(TextBox1);
        }
        if (value == "TextArea")
        {
            TextBox DateTextBox = new TextBox() { EnableViewState = false, CssClass = "form-control", TextMode = TextBoxMode.MultiLine, Rows = 5, Columns = 50 };
            e.Row.Cells[3].Controls.Add(DateTextBox);
        }
        if (value == "Content")
        {
            TextBox ContentAreaControl = new TextBox()
            {
                TextMode = TextBoxMode.MultiLine,
                EnableViewState = false,
                Columns = 10,
                MaxLength = 150,
                Height = 200,
                CssClass = "Content-container",
            };

            e.Row.Cells[3].Controls.Add(ContentAreaControl);
        }
    }
}

protected void SaveTemplateDetails(object sender, EventArgs e)
{
    foreach (GridViewRow row in gv.Rows)
    {         
        FieldValue.Value = row.Cells[3].Text.ToString();
         *//I DONT KNOW HOW TO READ THE VALUE*
    }
}

Я просто хочу знать, как это правильноспособ чтения этого динамически создаваемого текстового поля

Спасибо

1 Ответ

1 голос
/ 14 июня 2019

Код страницы ASPX.

<asp:GridView ID="gv" runat="server" AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" GridLines="None" OnRowDataBound="gv_RowDataBound1">
                <AlternatingRowStyle BackColor="White" />
                <Columns>
                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:CheckBox runat="server" ID="selectProspect" Checked="true" />
                        </ItemTemplate>
                    </asp:TemplateField>

                    <asp:BoundField DataField="FieldTitle" HeaderText="" />
                    <asp:BoundField DataField="FieldType" HeaderText="FieldType" />
                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:BoundField DataField="RightText" HeaderText="" />
                    <asp:BoundField DataField="TemplatesInfoCode" HeaderText="TemplatesInfoCode" />
                </Columns>
            </asp:GridView>

Код файла

   protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                string fieldType = e.Row.Cells[2].Text;
                TextBox txtData = e.Row.Cells[3].FindControl("TextBox1") as TextBox;
                switch (fieldType)
                {
                    case "Date":
                    case "TextBox":
                        txtData.EnableViewState = false;
                        txtData.CssClass = "form-control";
                        break;
                    case "TextArea":
                        txtData.EnableViewState = false;
                        txtData.CssClass = "form-control";
                        txtData.TextMode = TextBoxMode.MultiLine;
                        txtData.Rows = 5;
                        txtData.Columns = 50;
                        break;
                    case "Content":
                        txtData.TextMode = TextBoxMode.MultiLine;
                        txtData.EnableViewState = false;
                        txtData.Columns = 10;
                        txtData.MaxLength = 150;
                        txtData.Height = 200;
                        txtData.CssClass = "Content-container";
                        break;
                }
            }
        }
        protected void btnSave_Click(object sender, EventArgs e)
        {
            SaveTemplateDetails();
        }
        private void SaveTemplateDetails()
        {
            foreach (GridViewRow row in gv.Rows)
            {
                foreach (Control c in row.Cells[3].Controls)
                {
                    TextBox txtDate = c as TextBox;
                    if (txtDate != null)
                    {
                        string data = txtDate.Text;
                    }
                }
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...