gridview 用法

来源:互联网 发布:淘宝衣服试用报告范文 编辑:程序博客网 时间:2024/05/04 13:52
先说说我的情况

1. GridView是AutoGenerateColumns="True",即列是自动生成的,但是由于各种需要,还添加了自己摸板列,如:
<asp:TemplateField HeaderText="详细情况">
<ItemTemplate>
<a href='bdgl03.aspx?ID= <%# DataBinder.Eval(Container.DataItem,"ID") %>'>详细情况 </a>
</ItemTemplate>
<ItemStyle Width="30px" BorderWidth="1px" HorizontalAlign="Center" />
<HeaderStyle HorizontalAlign="Center" />
    </asp:TemplateField>

2.生成表格的Sql语句是CS文件中给出的,即在  if (!IsPostBack)中进行绑定数据.

3.该控件要来更新数据,因此加入了如下代码:
           
<asp:TemplateField HeaderText="编辑" ShowHeader="False">
    <EditItemTemplate>
        <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="True" CommandName="Update"
            Text="更新"> </asp:LinkButton>
        <asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Cancel"
            Text="取消"> </asp:LinkButton>
    </EditItemTemplate>
    <ItemStyle BorderWidth="1px" HorizontalAlign="Center" VerticalAlign="Middle" Width="120px" />
    <ItemTemplate>
        <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Edit"
            Text="编辑"> </asp:LinkButton>
    </ItemTemplate>
</asp:TemplateField>

我的问题是:
当我点击"编辑",修改数据后,再点"更新",此时执行GridView_RowUpdating事件,需要获取当前行的"可编辑框"的内容,(由于我的列是自动生成的),没有用模板,因此每一个可编辑框没有名字,我用如下方法获取:
string ss = (this.myGridView.Rows[e.RowIndex].Cells[4]).ToString();  (其中4是列序号)

用此方法可以获取主键列的数值(不可编辑的显示数据),不能获取 可编辑框 中的数据.

请大家给个办法.


  100  修改 删除 举报 引用 回复

进入用户个人空间
加为好友
发送私信
在线聊天
  • netspies
  • 等级:
  • 可用分等级:
  • 总技术分:
  • 总技术分排名:
发表于:2008-03-28 16:31:241楼 得分:0对上面问题的一些补充;

该控件中数据不能指定一个固定的表,根据页面参数来决定.所以不能进行模板绑定.

 修改 删除 举报 引用 回复

进入用户个人空间
加为好友
发送私信
在线聊天
  • Ystart328Y
  • 等级:
  • 可用分等级:
  • 总技术分:
  • 总技术分排名:
发表于:2008-03-28 16:31:502楼 得分:80              <asp:GridView ID="GridView1" runat="server" Height="144px"  Width="768px" AllowPaging="True" CellPadding="4" ForeColor="#333333"
                GridLines="None" OnPageIndexChanging="GridView1_PageIndexChanging" PageSize="5" AutoGenerateColumns="false" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating">
                <Columns>
                  <asp:BoundField DataField="u_id" HeaderText="用户ID"  ReadOnly="True"/>
                  <asp:BoundField DataField="u_name" HeaderText="用户名" />
                  <asp:BoundField DataField="u_age" HeaderText="用户年龄" />
                  <asp:BoundField DataField="u_sex" HeaderText="用户性别" />
                  <asp:BoundField DataField="u_phone" HeaderText="用户电话" />
                  <asp:BoundField DataField="u_email" HeaderText="用户Email" />
                  <asp:BoundField DataField="u_address" HeaderText="用户地址" />
                  <asp:CommandField HeaderText="选择" ShowSelectButton="true" />
                  <asp:CommandField HeaderText="删除" ShowDeleteButton="true"/>
                  <asp:CommandField HeaderText="编辑" ShowEditButton="true" />
                </Columns>
                <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
                <RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
                <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
                <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
                <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="Red" />
                <AlternatingRowStyle BackColor="White" />
            </asp:GridView>

--------------------------------------------------------------
  protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        string sqlstr2 = "delete from Users where u_id='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
        SqlConnection con = new SqlConnection(str);
        SqlCommand cmd = new SqlCommand(sqlstr2,con);
        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
        Databinds();
    }
    //更新的功能
    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        SqlConnection con = new SqlConnection(str);
        string sqlstr = "update Users set u_name='"
            + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim() + "',u_age='"
            + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim() + "',u_sex='"
            + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim() + "',u_phone='"
            + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString().Trim() + "',u_email='"
            + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[5].Controls[0])).Text.ToString().Trim() + "',u_address='"
            + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[6].Controls[0])).Text.ToString().Trim() + "'where u_id='"
            +GridView1.DataKeys[e.RowIndex].Value.ToString()+"'";
        SqlCommand cmd = new SqlCommand(sqlstr,con);
        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
        GridView1.EditIndex = -1;
        Databinds();

    }
    //编辑的功能
    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    {
        GridView1.EditIndex = e.NewEditIndex;
        Databinds();
    }
    //退出编辑
    protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {
        GridView1.EditIndex = -1;
        Databinds();
    } 修改 删除 举报 引用 回复

进入用户个人空间
加为好友
发送私信
在线聊天
  • insus
  • 等级:
  • 可用分等级:
  • 总技术分:
  • 总技术分排名:
发表于:2008-03-28 16:33:473楼 得分:20参考这个:
http://download.csdn.net/source/397336

如果下载不了,请给版大留言:
http://webim.csdn.net/Messages/chenxhcc.ashx

如果看了这个例子,还是解决不了你的问题,Insus.NET无语了! 修改 删除 举报 引用 回复

进入用户个人空间
加为好友
发送私信
在线聊天
  • netspies
  • 等级:
  • 可用分等级:
  • 总技术分:
  • 总技术分排名:
发表于:2008-03-28 17:11:164楼 得分:0后面这个上不去,不过还是感谢你. 修改 删除 举报 引用 回复

进入用户个人空间
加为好友
发送私信
在线聊天
  • zsj830120
  • 等级:
  • 可用分等级:
  • 总技术分:
  • 总技术分排名:
发表于:2008-03-28 17:13:175楼 得分:02楼的方法应该就可以的啊