datagrid编辑列问题**************

fhuibo 2011-10-22 08:54:18
web程序 ,datagrid 动态增加的列(列不固定),怎么在datagrid后增加编辑列,并且点击编辑后只修改数值型的列(已知道那个列是数值型)
在grid前边增加编辑列,我能实现,但是客户要求把编辑列放grid后边
...全文
42 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
DataGrid.....vs2003的东西啊。。。。后续的都要自己手工添加了啊
你的动态增加的列是怎么增加的?
你也可以把编辑列作为一个动态增加的列啊


并且点击编辑后只修改数值型的列(已知道那个列是数值型)
在GridView里每个colume都是有个属性叫ReadOnly的,设为true就不可编辑了
萧炎 2011-10-22
  • 打赏
  • 举报
回复

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" PageSize="10"

Width="542px" AllowPaging="True" AllowSorting="True"

DataKeyNames="DB31_1,DB31_2" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" OnPageIndexChanging="GridView1_PageIndexChanging" OnRowDataBound="GridView1_RowDataBound" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" OnSorting="GridView1_Sorting" >

<Columns>

<asp:TemplateField HeaderText="序号">

<ItemTemplate>

<%# this.GridView1.PageIndex * this.GridView1.PageSize + this.GridView1.Rows.Count + 1%>

</ItemTemplate>

</asp:TemplateField>

<asp:TemplateField HeaderText="学历代码" SortExpression="DB1_1">

<EditItemTemplate>

<%--<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("DB1_1") %>'></asp:TextBox>--%>

<asp:DropDownList ID ="ddlXL" runat="server" DataValueField='<%# Bind("DB1_1") %>'></asp:DropDownList>

</EditItemTemplate>

<ItemTemplate>

<asp:Label ID="Label1" runat="server" Text='<%# Bind("xueliText") %>'></asp:Label>

</ItemTemplate>

</asp:TemplateField>

<asp:TemplateField HeaderText="学历名称" SortExpression="DB1_2">

<EditItemTemplate>

<asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("DB1_2") %>'></asp:TextBox>

</EditItemTemplate>

<ItemTemplate>

<asp:Label ID="Label2" runat="server" Text='<%# Bind("DB1_2") %>'></asp:Label>

</ItemTemplate>

</asp:TemplateField>



<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>

<ItemTemplate>

<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Edit"

Text="编辑" OnClientClick="return confirm('确认要编辑吗?');"></asp:LinkButton>



<asp:LinkButton ID="LinkButton3" runat="server" CausesValidation="False" CommandName="Delete"

Text="删除" OnClientClick="return confirm('确认要删除吗?');"></asp:LinkButton>

<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Select"

Text="选择"></asp:LinkButton>

</ItemTemplate>

</asp:TemplateField>

</Columns>

<AlternatingRowStyle BackColor="Aquamarine" />

</asp:GridView>


/// <summary>

/// 绑定数据到GridView

/// </summary>

private void GridViewBind()

{

检索数据库

string strSql = "SELECT * FROM DB1";

得到数据集

this.GridView1.DataSource=conn.GetDs(strSql).Tables[0].DefaultView;

this.GridView1.DataBind();



}

/// <summary>

/// 编辑当前行

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)

{

GridView1.EditIndex = e.NewEditIndex;

//当前编辑行背景色高亮

this.GridView1.EditRowStyle.BackColor = Color.FromName("#F7CE90");

GridViewBind();

}

/// <summary>

/// 取消编辑状态

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)

{

GridView1.EditIndex = -1;

GridViewBind();

}

/// <summary>

/// 删除记录过程

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)

{

//得到单位编号

string rowToDelete = GridView1.DataKeys[e.RowIndex].Values[0].ToString();

//转换为整数

//int ID=Convert.ToInt32(rowToDelete);

//从数据库中删除

string str = "DELETE FROM DB1 where DB1_1=" + "'" + rowToDelete + "'" + "";



try

{

conn.RunSql(str);

//重新绑定数据

GridViewBind();

}

catch (Exception ex)

{

Response.Write("数据库错误,错误原因:" + ex.Message);

Response.End();

}

}

/// <summary>

/// 更新记录过程

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)

{

string ID = GridView1.DataKeys[e.RowIndex].Values[0].ToString();

string DB1_1 = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox1")).Text;

//string DB1_2 = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox2")).Text;

string DB1_2 = (((DropDownList))GridView1.Rows[e.RowIndex].FindControl("ddlXL")).SelectedItem.Text;



//判断表单项是否有空并给出提示信息

if (DB1_1 == "" || DB1_2 == "")

{

conn.Alert("请输入完整信息!", Page);

return;

}

try

{

conn.BuilderEdit("select * from DB1 where DB1_1 ='" + ID + "'");

conn.dr["DB1_1"] = DB1_1;

conn.dr["DB1_2"] = DB1_2;

conn.BuilderEditClose();

}

catch (OracleException err)

{

if (err.Code.ToString() == "1")

conn.Alert("错误:已存在具有相同主键的记录", Page);

else

conn.Alert("错误:未能添加记录", Page);

}

Response.Write("<script language='javascript'>alert('数据已被保存!');</script>");

//返回浏览状态

GridView1.EditIndex = -1;

GridViewBind();

}

/// <summary>

/// 分页事件

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)

{

GridView1.PageIndex = e.NewPageIndex;

GridViewBind();

}

/// <summary>

/// 加入鼠标效果及为DropDownList绑定值

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)

{

//为DropDownList绑定值

if (((DropDownList)e.Row.FindControl("ddlXL")) != null)

{

DropDownList ddlXL = (DropDownList)e.Row.FindControl("ddlXL");

ddlXL.Items.Clear();

ddlXL.Items.Add(new ListItem("博士", "1"));

ddlXL.Items.Add(new ListItem("硕士", "2"));

ddlXL.Items.Add(new ListItem("学士", "3"));

}

//加入鼠标滑过的高亮效果

if (e.Row.RowType == DataControlRowType.DataRow)//判定当前的行是否属于datarow类型的行

{

//当鼠标放上去的时候 先保存当前行的背景颜色 并给附一颜色

e.Row.Attributes.Add("onmouseover", "currentcolor=this.style.backgroundColor;this.style.backgroundColor='yellow',this.style.fontWeight='';");

//当鼠标离开的时候 将背景颜色还原的以前的颜色

e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=currentcolor,this.style.fontWeight='';");

}

//单击行改变行背景颜色

if (e.Row.RowType == DataControlRowType.DataRow)

{

e.Row.Attributes.Add("onclick", "this.style.backgroundColor='#99cc00'; this.style.color='buttontext';this.style.cursor='default';");

}

}

110,534

社区成员

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

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

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