Gridview中不能编辑

lqhly 2009-07-01 05:28:12
我有一个Gridview,最下面用一个添加按钮,我想把添加、编辑、删除于一体,输入内容后,点添加后,Gridview绑定数据,但点编辑后,更新和取消按钮出来后,编辑要修改的内容时,不能改动,请帮我看看问题出现在那里。前台代码为:
<asp:GridView ID="GridView1" ShowFooter="true" BorderColor="Black" CellPadding="4" OnRowDataBound="GridView1_RowDataBound" OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing"
OnRowUpdating="GridView1_RowUpdating" runat="server" AutoGenerateColumns="False" Font-Size="12px" Width="674px" AllowSorting="True">
<Columns>
<asp:TemplateField HeaderText="起始日期:">
<ControlStyle Width="100px" />
<ItemTemplate>
<asp:Label ID="Zlfkmx_t_Qsrq" runat="server" Text='<%# Bind("Qsrq") %>' ></asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="Zlfkmx_t_Qsrq_txt" runat="server" onClick="Fcalendar(this)"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="截至日期:">
<ControlStyle Width="100px" />
<ItemTemplate>
<asp:Label ID="Zlfkmx_t_Jzrq" runat="server" Text='<%# Bind("Jzrq") %>'></asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="Zlfkmx_t_Jzrq_txt" runat="server" onClick="Fcalendar(this)"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="租金(元)">
<ControlStyle Width="280px" />
<ItemTemplate>
<asp:Label ID="Czje" runat="server" Text='<%# Bind("Czje") %>'></asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="Czje_txt" runat="server" Width="80px">0.00</asp:TextBox>
 <asp:RegularExpressionValidator ID="RegularExpressionValidator6" runat="server" ControlToValidate="Czje_txt"
CssClass="Text" ErrorMessage="格式不正确!" ValidationExpression="^(-?\d+)(\.\d+)?$"></asp:RegularExpressionValidator>
<asp:Button ID="btnAdd" runat="server" Text="添 加" OnClick="btnAdd_Click" />
</FooterTemplate>
</asp:TemplateField>
<asp:CommandField HeaderText="编辑" ShowEditButton="True" />
<asp:CommandField HeaderText="删除" ShowDeleteButton="True" />
</Columns>
<HeaderStyle BackColor="Azure" Font-Size="12px" HorizontalAlign="Center" />
<RowStyle HorizontalAlign="Center" />
<PagerStyle HorizontalAlign="Center" />
</asp:GridView>
...全文
211 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
IHandler 2009-07-02
  • 打赏
  • 举报
回复
模版列没有加EditItemTemplate
在EditItemTemplate中方一个TextBox或其他可操作控件 并绑定数据
lqhly 2009-07-02
  • 打赏
  • 举报
回复
可以了,我忘了把asp:Label改成asp:TextBox,多谢多谢!!
lqhly 2009-07-02
  • 打赏
  • 举报
回复
我是这样加的:

<ItemTemplate>
<asp:Label ID="Zlfkmx_t_Qsrq" runat="server" Text='<%# Bind("Qsrq") %>' ></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:Label ID="Zlfkmx_t_Qsrq" runat="server" Text='<%# Bind("Qsrq") %>' ></asp:Label>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="Zlfkmx_t_Qsrq_txt" runat="server" onClick="Fcalendar(this)"></asp:TextBox>
</FooterTemplate>
但还是不行,是不是没加对?
qldsrx 2009-07-02
  • 打赏
  • 举报
回复
你少了个 <EditItemTemplate>,比如
<EditItemTemplate>
<asp:TextBox ID="Zlfkmx_t_Qsrq" runat="server" Text=' <%# Bind("Qsrq") %>' > </asp:TextBox>
</EditItemTemplate>

<ItemTemplate>是用来看的,不是编辑的。
qldsrx 2009-07-02
  • 打赏
  • 举报
回复
你少了个<EditItemTemplate>,比如
<EditItemTemplate>
<asp:TextBox ID="Zlfkmx_t_Qsrq" runat="server" Text=' <%# Bind("Qsrq") %>' > </asp:Label>
</EditItemTemplate>
lqhly 2009-07-02
  • 打赏
  • 举报
回复
我试了一下,前台代码的列,用如下的代码是可以修改的
<Columns>
<asp:BoundField DataField="Qsrq" HeaderText="起始日期" /> </Columns>
但是用如下的代码就不行了:
<Columns>
<asp:TemplateField HeaderText="起始日期:">
<ItemTemplate>
<asp:Label ID="Zlfkmx_t_Qsrq" runat="server" Text='<%# Bind("Qsrq") %>' ></asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="Zlfkmx_t_Qsrq_txt" runat="server" ></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
我的<FooterTemplate>是用来插入数据用的,而编辑时用<ItemTemplate>时,<ItemTemplate>的内容是不能修改的,大侠看看如何既能插入数据,又能同时修改?

lqhly 2009-07-01
  • 打赏
  • 举报
回复
现在数据绑定改成如下还是不行:
public void bindy()
{
SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["conStr"]);
con.Open();SqlDataAdapter myda = new SqlDataAdapter("select * from Zlfkmx_t where Htno='YYYYY'", con);
DataSet myds = new DataSet();
myda.Fill(myds, "Zlfkmx_t");
GridView1.DataSource = myds;
GridView1.DataKeyNames = new string[] { "Id" };
GridView1.DataBind();
con.Close();

}
POWER_WONG 2009-07-01
  • 打赏
  • 举报
回复
用ObjectDataSource来将数据绑定到GridView,在配置ObjectDataSource时会有相应的删除与更新及插入方法可供选择,不知你有没有用过强类型的DataSet和TableAdapter,可以将这些作为ObjectDataSource的数据访问来源,用起来也比较方便,建议最好用三层架构,不要将一些SQL语句直接放在后台代码中。
walkghost 2009-07-01
  • 打赏
  • 举报
回复
描述得我看不懂。晕了。。。。。语句好不通顺啊。。。
yanhuanghero 2009-07-01
  • 打赏
  • 举报
回复
必须用SqlDataSource或AccessDataSource等数据源控件指定数据才可以进行编辑操作。
fengjian_428 2009-07-01
  • 打赏
  • 举报
回复
好长。
lqhly 2009-07-01
  • 打赏
  • 举报
回复
后台代码为:
后天代码为:
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
bindy();
}

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
string sqlStr = "delete from Zlfkmx_t where ID=" + Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value) + "";
Common.ExecuteSql(sqlStr);
bindy();
}
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string ID = GridView1.DataKeys[e.RowIndex].Value.ToString();
string Zlfkmx_t_qsrq = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[0].FindControl("Zlfkmx_t_Qsrq"))).Text.ToString().Trim();
string Zlfkmx_t_jzrq = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].FindControl("Zlfkmx_t_Qsrq"))).Text.ToString().Trim();
string Czje = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].FindControl("Czje"))).Text.ToString().Trim();
[3].Controls[0])).Text.ToString().Trim();
string sqlStr = "update Zlfkmx_t set Qsrq='" + Zlfkmx_t_qsrq + "',Jzrq='" + Zlfkmx_t_jzrq + "',Czje='" + Decimal.Parse(Czje) + "' where ID=" + ID + "";
Common.ExecuteSql(sqlStr);
GridView1.EditIndex = -1;
bindy();
}

public void bindy()
{
string sqlStr = "select * from Zlfkmx_t where Htno='YYYYY'";//----取个不存在的值
DataSet myds = Common.dataSet(sqlStr);
GridView1.DataSource = myds;
GridView1.DataKeyNames = new string[] { "Id" };
GridView1.DataBind();
}
yanhuanghero 2009-07-01
  • 打赏
  • 举报
回复

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧