GridView实现动态编辑功能(下)

fei2008002 2009-11-30 12:00:48
后台cs.code

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.Xml;
using System.IO;
using System.Collections.Generic;
using System.Drawing;

namespace Product_System
{
public partial class _Default : System.Web.UI.Page
{
DataSet myds = null;
//数据库连接
string strconn = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
DropDownList1.DataValueField = "XID";
DropDownList1.DataTextField = "XName";
DropDownList1.DataSource = SelectVal();
DropDownList1.DataBind();
GridViewBind();
}

}

/// <summary>
/// 绑定GridView
/// </summary>
public void BindGridView()
{
SqlConnection sqlcon = new SqlConnection(strconn);
sqlcon.Open();
string str = "select * from Product";
SqlDataAdapter sqlDA = new SqlDataAdapter(str,sqlcon);
myds = new DataSet();
sqlDA.Fill(myds,"Product");
GridView1.DataSource = myds.Tables["Product"];
GridView1.DataBind();
sqlcon.Close();
}

/// <summary>
/// 动态GridView绑定
/// </summary>
public void GridViewBind()
{
DataTable dt = new DataTable();
dt = selectProduct(txtName.Text, DropDownList1.SelectedValue);
int number = myds.Tables[0].Columns.Count;
if (dt.Rows.Count > 0)
{
txtName.Text = "";
for (int i = 0; i < number; i++)
{
if (jiexiName(i.ToString(), "DB_CNANME", "disp", "on") != "")
{
BoundField field = new BoundField();
field.DataField = jiexiName(i.ToString(), "DB_CNANME", "disp", "on");
field.HeaderText = jiexiName(i.ToString(), "grid_name", "disp", "on");
GridView1.Columns.Add(field);
GridView1.DataSource = dt;
GridView1.DataBind();
}
}
}
}

/// <summary>
/// 删除数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public int DeleteProduct(int id)
{
string sql = "Delete from Product where ID='" + id + "'";
int result = ExecuteNonQuery(sql);
return result;
}

/// <summary>
/// 查询数据
/// </summary>
/// <param name="TextVal">文本框值</param>
/// <param name="DropVal">下拉值</param>
/// <returns></returns>
private DataTable selectProduct(string TextVal, string DropVal)
{
string sql = "select " + SelectJieXiName() + " from Product where";

if (TextVal.Length > 0)
{
sql += " " + DropVal + " like '%" + TextVal + "%'";
}
else
{
sql = "select * from Product";
}
return ExecuteQuery(sql);
}

/// <summary>
/// 对数据库执行 SQL 查询
/// </summary>
/// <param name="strSqlPro"></param>
/// <returns></returns>
public DataTable ExecuteQuery(string strSqlPro)
{
SqlDataAdapter DA = new SqlDataAdapter(strSqlPro, strconn);
DataSet ds = new DataSet();
DA.Fill(ds);
return ds.Tables[0];
}

/// <summary>
/// 执行SQL语句,返回受影响的行数
/// </summary>
/// <param name="strSQL"></param>
/// <returns></returns>
public int ExecuteNonQuery(string strSQL)
{
int result = 0;
SqlConnection sqlCon = new SqlConnection(strconn);
sqlCon.Open();
SqlCommand sqlComm = new SqlCommand(strSQL, sqlCon);
result = sqlComm.ExecuteNonQuery();
sqlCon.Close();
return result;
}

/// <summary>
/// 查询按钮事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Button1_Click1(object sender, EventArgs e)
{
GridViewBind();
}

/// <summary>
/// 删除事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_RowDeleting(object sender,GridViewDeleteEventArgs e)
{
int rowid = int.Parse(GridView1.DataKeys[e.RowIndex][0].ToString());
int result = DeleteProduct(rowid);
if (result > 0)
{
GridViewBind();
Response.Write("<script>alert('删除成功!')</script>");
}
else
{
Response.Write("<script>alert('删除失败!')</script>");
}
}

/// <summary>
/// GridView索引改变事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
GridViewBind();
}


///<summary>
///获取XML节点属性
///</summary>
///<param name="sname">节点属性</param>
///<returns></returns>
private string jiexiName(string sno,string s_attrib,string s_key,string s_kvalue)
{
XmlDocument doc = new XmlDocument();
//取到xml文档
doc.Load(Server.MapPath("XmlFile/TableColumns.xml"));
//取到根节点
XmlElement root = (XmlElement)doc.SelectSingleNode("ebaby");
foreach (XmlNode columns_node in root.SelectSingleNode("columns").ChildNodes)
{
XmlElement columns_element = (XmlElement)columns_node;
if (columns_element.GetAttribute("dateset_no") == sno && columns_element.GetAttribute(s_key) == s_kvalue)
{
return columns_element.GetAttribute(s_attrib);
}
}
return "";
}

/// <summary>
/// 获取XML属性值(disp="on"的列)
/// </summary>
/// <returns></returns>
private string SelectJieXiName()
{
string str = null;
BindGridView();
//取XML里字段列表
int resCount = myds.Tables[0].Columns.Count;
for (int a = 0; a < resCount; a++)
{
str += jiexiName(a.ToString(), "DB_CNANME", "disp", "on") + ",";
}
while (str.IndexOf(",,") >= 0)
{
str = str.Replace(",,", ",");
}
//去掉列字段后面的逗号
str = str.Substring(0, str.Length - 1);
return str;
}


// <summary>
// 编辑事件
// </summary>
// <param name="sender"></param>
// <param name="e"></param>
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{

}


///<summary>
///获取XML节点属性标题值
///</summary>
///<param name="sname">节点属性值</param>
///<returns></returns>
private List<XMLEns> SelectVal()
{
List<XMLEns> gridlist = new List<XMLEns>();
XmlDocument doc = new XmlDocument();
//取到xml文档
doc.Load(Server.MapPath("XmlFile/TableColumns.xml"));
//取到根节点
XmlElement root = (XmlElement)doc.SelectSingleNode("ebaby");
foreach (XmlNode columns_node in root.SelectSingleNode("columns").ChildNodes)
{
XmlElement columns_element = (XmlElement)columns_node;
if (columns_element.GetAttribute("query") == "on")
{
XMLEns x = new XMLEns ();
x.XID = columns_element.GetAttribute("DB_CNANME");
x.XName = columns_element.GetAttribute("grid_name");
gridlist.Add(x);
}
}
return gridlist;
}

/// <summary>
/// 弹出错误消息对话框
/// </summary>
/// <param name="str"></param>
protected void ShowMessage(string str)
{
Response.Write("<script language='javascript'>alert('" + str + "');</script>");
}

protected void Drop_DataBond(object sender, EventArgs e)
{
DropDownList1.Items.Add("——请选择——");
if (!IsPostBack)
{
DropDownList1.SelectedValue = "——请选择——";
}
}

}

#region 属性
public class XMLEns
{
string xid = "";
string xname = "";
public string XID
{
get
{
return xid;
}
set
{
xid = value;
}
}
public string XName
{
get
{
return xname;
}
set
{
xname = value;
}
}
}
#endregion
}
...全文
157 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
fei2008002 2009-12-02
  • 打赏
  • 举报
回复
str += jiexiName(a.ToString(), "DB_CNANME", "disp", "on") + ",";

就是动态查找的一个方法。后面的4个参数分别是XML里的4个属性,然后通过XML查找对应的列名!
huo130106 2009-12-01
  • 打赏
  • 举报
回复
str += jiexiName(a.ToString(), "DB_CNANME", "disp", "on") + ",";
没明白什么意思
  • 打赏
  • 举报
回复
++

62,264

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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