Adi tyagi Ответов: 1

Как прочитать значение из текстового поля gridview


Привет,

я ввожу в TextBox в GridView в имеющихся ниже код на событие связано строки
Цитата:
TextBox tx = новое текстовое поле();
tx.ID = " txtStore";
Техас.Атрибуты.Добавить ("runat", " сервер");
е.Подряд.Клеток[2].Контроля.Добавить (tx);

теперь когда я пытаюсь найти и прочитать значение этого текстового поля raise null exception code is -
Цитата:
для (тип int я = 0; Я &л; GvVarientstoredetails.Строк.Граф; i++)
{
TextBox box1 = (TextBox)GvVarientstoredetails.Строки[i].Ячейки[2]. FindControl("txtStore");
строка s = box1. Text;
}


Что я уже пробовал:

для (тип int я = 0; Я &л; GvVarientstoredetails.Строк.Граф; i++)
{
TextBox box1 = (TextBox)GvVarientstoredetails.Строки[i].Ячейки[2]. FindControl("txtStore");
строка s = box1. Text;
}
строка CustomerID = ((TextBox) GvVarientstoredetails.Строки[0]. FindControl ("txtStore")). текст;

пожалуйста, проводите...

1 Ответов

Рейтинг:
8

Vincent Maverick Durano

Я не видел весь ваш код в событии RowDataBound, поэтому не могу сказать, что пошло не так. Возможно, вы захотите использовать событие RowCreated, чтобы убедиться, что элементы управления будут созданы. Вот краткий пример:

Aspx-файл:

<asp:content id="Content2" contentplaceholderid="MainContent" runat="server" xmlns:asp="#unknown">
    <asp:gridview id="GridView1" runat="server" onrowcreated="GridView1_RowCreated">
        <columns>
                <asp:templatefield>
                    <itemtemplate>
                        <asp:placeholder id="PlaceHolder1" runat="server">           </asp:placeholder>
                        </itemtemplate>
                </asp:templatefield>
         </columns>
    </asp:gridview>
    <asp:button id="Button1" runat="server" onclick="Button1_Click" text="Button" />
</asp:content>


С ФОНОВЫМ КОДОМ:

using System;
using System.Web.UI.WebControls;
using System.Data;
 
namespace WebFormDemo
{
    public partial class DynamicControlInGridView : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e) {
            if (!IsPostBack)
                BindGridView();
        }
 
        protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) {
            if (e.Row.RowType == DataControlRowType.DataRow) {
                TextBox tbox = new TextBox();
                tbox.ID = "TextBox1";
 
                PlaceHolder p = (PlaceHolder)e.Row.FindControl("PlaceHolder1");
                p.Controls.Add(tbox);
 
                //you could also add it to the cells collection like

                //TextBox tbox = new TextBox();
                //tbox.ID = "TextBox1";
                //e.Row.Cells[0].Controls.Add(tbox);
 
            }
        }
 
        private void BindGridView() {
            GridView1.DataSource = CreateDataSource();
            GridView1.DataBind();
        }
 
        public DataTable CreateDataSource() {
            DataTable dt = new DataTable();
            DataRow dr;
 
            dt.Columns.Add(new DataColumn("ID", typeof(string)));
            dt.Columns.Add(new DataColumn("Name", typeof(string)));
            dt.Columns.Add(new DataColumn("Lastname", typeof(string)));
 
            dr = dt.NewRow();
            //add values to each columns
            dr["ID"] = 1;
            dr["Name"] = "Vincent";
            dr["LastName"] = "Durano";
            dt.Rows.Add(dr);
            return dt;
        }
 
        protected void Button1_Click(object sender, EventArgs e) {
	    //access TextBox controls
            foreach (GridViewRow row in GridView1.Rows) {
                TextBox tbox = row.FindControl("TextBox1") as TextBox;
                if (tbox != null) {
                    Response.Write("Found TextBox!");
                }
            }
           
        }
       
    }
}