asp.net 数据处理
TextBox Ywac =(TextBox) GridView1.Rows[GridView1.EditIndex].Cells[0].Controls[0]可以找到控件,Ywac.text却没有值!
请各位高手帮看一下什么问题. --------------------编程问答-------------------- 控件往返状态保存属性是否为true?
如果已为true
则是你在页面的载入Page_Load()事件中重新绑定了数据,也就是常见的
Page.IsPostBack问题 --------------------编程问答-------------------- Page.IsPostBack问题 --------------------编程问答-------------------- 如何让Page.IsPostBack为True. --------------------编程问答-------------------- 服务器控件回发是false
get是true,客户端控件 post true --------------------编程问答-------------------- 其实也可以在GridView.DataBound事件处理代码里找到编辑状态下的TextBox的值。
如:
<asp:TemplateField HeaderText="UnitPrice" SortExpression="UnitPrice">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("UnitPrice") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("UnitPrice") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
想找到编辑状态下的TextBox1的值。
protected void GridView1_DataBound(object sender, EventArgs e)
{
if (GridView1.EditIndex > -1)
{
TextBox tb = (TextBox)GridView1.Rows[GridView1.EditIndex].FindControl("TextBox1");
Page.ClientScript.RegisterStartupScript(this.GetType(), "scriptKey", "alert('" + tb.Text + "');", true);
}
}
只要点击GridView上的编辑按钮,因为GridView需要重新绑定数据,以使要编辑的行以TextBox形式显示,所以DataBound事件必定被触发,这时检查EditIndex是否大于-1,然后就可以找到TextBox1了。 --------------------编程问答-------------------- 我在UPDATE使用的是存储过程.触发更新前事件进行数据与Gridview里的编辑状态下的控件绑定.才出现之前提出的问题. --------------------编程问答-------------------- 把你的Page_Load()事件里的代码改成以下代码
if(!IsPostBack)
{
//你原来的代码
} --------------------编程问答-------------------- 判断是否为回发,
if(!IsPostBack)
{
//你原来的代码
} --------------------编程问答-------------------- 还是没有解决,哪位易做图可以告诉我,如何用Gridview+SqlDataSource+UPDATE(存储过程)进行更新数据 --------------------编程问答-------------------- 你的列是放到模板中的吗?
如果是放到模板中,则就该是TextBox tb = (TextBox)GridView1.Rows[GridView1.EditIndex].FindControl("TextBox1");
而不是TextBox Ywac =(TextBox) GridView1.Rows[GridView1.EditIndex].Cells[0].Controls[0]
补充:.NET技术 , ASP.NET