using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
private const int _firstEdITCellIndex = 2;
DataSet dataSet=new DataSet();
DataTable dt_biao = new DataTable();
DataSet ds = new DataSet(); public class GridViewTemplateTextBox : ITemplate
{
private DataControlRowType templateType;
private string columnName;
private string dataField;
public GridViewTemplateTextBox(DataControlRowType type, string colname, string datafield)
{
templateType = type;
columnName = colname;
dataField = datafield;
}
public void InstantiateIn(System.Web.UI.Control container)
{
switch (templateType)
{
case DataControlRowType.Header:
Literal lc = new Literal();
lc.Text = columnName;
container.Controls.Add(lc);
break;
case DataControlRowType.DataRow:
LinkButton tb = new LinkButton();
tb.ID = container.ClientID;
tb.DataBinding += new EventHandler(tb_DataBinding);
container.Controls.Add(tb);
DropDownList drr = new DropDownList();
drr.Visible = false;
drr.ID = "dropdown";
string query = "select sSystemName from tb_SingleSystem";
string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=HxFutures;Integrated Security=True;";
SqlConnection myConnection = new SqlConnection(connectionString);
SqlDataAdapter ad = new SqlDataAdapter(query, myConnection);
DataSet ds = new DataSet();
ad.Fill(ds);
drr.AppendDataBoundItems = true;
drr.DataSource = ds.Tables[0];///品种选择下拉列表框绑定
drr.DataTextField = ds.Tables[0].Columns[0].ToString();///绑定text值
drr.DataValueField = ds.Tables[0].Columns[0].ToString();///绑定value值
drr.Items.Add(new ListItem("-----请选择------", ""));
container.Controls.Add(drr);
break;
default:
break;
}
}
private void tb_DataBinding(object sender, EventArgs e)
{
LinkButton tb = (LinkButton)sender;
tb.Width = Unit.Percentage(100);
GridViewRow container = (GridViewRow)tb.NamingContainer;
tb.Text = ((DataRowView)container.DataItem)[dataField].ToString();
tb.Width = Unit.Pixel(70);
tb.Style.Add("TEXT-ALIGN", "right");
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
string query = "select sVariety from tb_Variety";
string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=HxFutures;Integrated Security=True;";
SqlConnection myConnection = new SqlConnection(connectionString);
SqlDataAdapter ad = new SqlDataAdapter(query, myConnection);
ad.Fill(ds);
dt_biao.Columns.Add("", typeof(System.String));
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
dt_biao.Columns.Add(ds.Tables[0].Rows[i]["sVariety"].ToString(), typeof(System.String));
}
int b = 2;
for (int i = 0; i < b; i++)
{
DataRow dr = dt_biao.NewRow();
dr[0] = "系统" + i.ToString();
dr[1] = i.ToString();
int a = i + 1;
dr[2] = a.ToString();
int c = a + 1;
dr[2] = c.ToString();
dt_biao.Rows.Add(dr);
}
Session["DT"] = dt_biao;
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
TemplateField customField = new TemplateField();
customField.ShowHeader = true;
customField.HeaderTemplate = new GridViewTemplateTextBox(DataControlRowType.Header, ds.Tables[0].Rows[i]["sVariety"].ToString(), dt_biao.Columns[i + 1].ToString());
customField.ItemTemplate = new GridViewTemplateTextBox(DataControlRowType.DataRow, ds.Tables[0].Rows[i]["sVariety"].ToString(), dt_biao.Columns[i + 1].ToString());
GridView1.Columns.Add(customField);
}
GridView1.DataSource = dt_biao;
GridView1.DataBind();
}
if (this.GridView1.SelectedIndex > -1)
{
this.GridView1.UpdateRow(this.GridView1.SelectedIndex, false);
} }
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
// 从第一个单元格内获得LinkButton控件
LinkButton _singleClickButton = (LinkButton)e.Row.Cells[0].Controls[0];
// 返回一个字符串,表示对包含目标控件的 ID 和事件参数的回发函数的 JAVAScript 调用
string _jsSingle = ClientScript.GetPostBackClientHyperlink(_singleClickButton, "");
// 给每一个可编辑的单元格增加事件
for (int columnIndex = _firstEdITCellIndex; columnIndex < e.Row.Cells.Count; columnIndex++)
{
// 增加列索引作为事件参数
string js = _jsSingle.Insert(_jsSingle.Length - 2, columnIndex.ToString());
// 给单元格增加onclick事件
e.Row.Cells[columnIndex].Attributes["onclick"] = js;
// 给单元格增加鼠标经过时指针样式
e.Row.Cells[columnIndex].Attributes["style"] += "cursor:pointer;cursor:hand;";
} }
}
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
private const int _firstEdITCellIndex = 2;
DataSet dataSet=new DataSet();
DataTable dt_biao = new DataTable();
DataSet ds = new DataSet(); public class GridViewTemplateTextBox : ITemplate
{
private DataControlRowType templateType;
private string columnName;
private string dataField;
public GridViewTemplateTextBox(DataControlRowType type, string colname, string datafield)
{
templateType = type;
columnName = colname;
dataField = datafield;
}
public void InstantiateIn(System.Web.UI.Control container)
{
switch (templateType)
{
case DataControlRowType.Header:
Literal lc = new Literal();
lc.Text = columnName;
container.Controls.Add(lc);
break;
case DataControlRowType.DataRow:
LinkButton tb = new LinkButton();
tb.ID = container.ClientID;
tb.DataBinding += new EventHandler(tb_DataBinding);
container.Controls.Add(tb);
DropDownList drr = new DropDownList();
drr.Visible = false;
drr.ID = "dropdown";
string query = "select sSystemName from tb_SingleSystem";
string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=HxFutures;Integrated Security=True;";
SqlConnection myConnection = new SqlConnection(connectionString);
SqlDataAdapter ad = new SqlDataAdapter(query, myConnection);
DataSet ds = new DataSet();
ad.Fill(ds);
drr.AppendDataBoundItems = true;
drr.DataSource = ds.Tables[0];///品种选择下拉列表框绑定
drr.DataTextField = ds.Tables[0].Columns[0].ToString();///绑定text值
drr.DataValueField = ds.Tables[0].Columns[0].ToString();///绑定value值
drr.Items.Add(new ListItem("-----请选择------", ""));
container.Controls.Add(drr);
break;
default:
break;
}
}
private void tb_DataBinding(object sender, EventArgs e)
{
LinkButton tb = (LinkButton)sender;
tb.Width = Unit.Percentage(100);
GridViewRow container = (GridViewRow)tb.NamingContainer;
tb.Text = ((DataRowView)container.DataItem)[dataField].ToString();
tb.Width = Unit.Pixel(70);
tb.Style.Add("TEXT-ALIGN", "right");
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
string query = "select sVariety from tb_Variety";
string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=HxFutures;Integrated Security=True;";
SqlConnection myConnection = new SqlConnection(connectionString);
SqlDataAdapter ad = new SqlDataAdapter(query, myConnection);
ad.Fill(ds);
dt_biao.Columns.Add("", typeof(System.String));
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
dt_biao.Columns.Add(ds.Tables[0].Rows[i]["sVariety"].ToString(), typeof(System.String));
}
int b = 2;
for (int i = 0; i < b; i++)
{
DataRow dr = dt_biao.NewRow();
dr[0] = "系统" + i.ToString();
dr[1] = i.ToString();
int a = i + 1;
dr[2] = a.ToString();
int c = a + 1;
dr[2] = c.ToString();
dt_biao.Rows.Add(dr);
}
Session["DT"] = dt_biao;
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
TemplateField customField = new TemplateField();
customField.ShowHeader = true;
customField.HeaderTemplate = new GridViewTemplateTextBox(DataControlRowType.Header, ds.Tables[0].Rows[i]["sVariety"].ToString(), dt_biao.Columns[i + 1].ToString());
customField.ItemTemplate = new GridViewTemplateTextBox(DataControlRowType.DataRow, ds.Tables[0].Rows[i]["sVariety"].ToString(), dt_biao.Columns[i + 1].ToString());
GridView1.Columns.Add(customField);
}
GridView1.DataSource = dt_biao;
GridView1.DataBind();
}
if (this.GridView1.SelectedIndex > -1)
{
this.GridView1.UpdateRow(this.GridView1.SelectedIndex, false);
} }
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
// 从第一个单元格内获得LinkButton控件
LinkButton _singleClickButton = (LinkButton)e.Row.Cells[0].Controls[0];
// 返回一个字符串,表示对包含目标控件的 ID 和事件参数的回发函数的 JAVAScript 调用
string _jsSingle = ClientScript.GetPostBackClientHyperlink(_singleClickButton, "");
// 给每一个可编辑的单元格增加事件
for (int columnIndex = _firstEdITCellIndex; columnIndex < e.Row.Cells.Count; columnIndex++)
{
// 增加列索引作为事件参数
string js = _jsSingle.Insert(_jsSingle.Length - 2, columnIndex.ToString());
// 给单元格增加onclick事件
e.Row.Cells[columnIndex].Attributes["onclick"] = js;
// 给单元格增加鼠标经过时指针样式
e.Row.Cells[columnIndex].Attributes["style"] += "cursor:pointer;cursor:hand;";
} }
}
{
GridView _gridView = (GridView)sender;
switch (e.CommandName)
{
case ("SingleClick"):
// 获得行索引
int _rowIndex = int.Parse(e.CommandArgument.ToString());
// 解析事件参数(在RowDataBound中增加的),从而获得被选中的列的索引
int _columnIndex = int.Parse(Request.Form["__EVENTARGUMENT"]);
// 设置GridView被选中的行的索引(每次回发后判断GridView1.SelectedIndex > -1则更新)
_gridView.SelectedIndex = _rowIndex;
// 绑定
_gridView.DataBind();
//GVDataBind();
// 获得被选中单元格的显示控件并设置其不可见
Control _displayControl = _gridView.Rows[_rowIndex].Cells[_columnIndex].Controls[0];
_displayControl.Visible = false;
// 获得被选中单元格的编辑控件并设置其可见
Control _edITControl = _gridView.Rows[_rowIndex].Cells[_columnIndex].Controls[1];
_edITControl.Visible = true;
// 清除被选中单元格属性以删除click事件
_gridView.Rows[_rowIndex].Cells[_columnIndex].Attributes.Clear();
// 设置焦点到被选中的编辑控件
ClientScript.RegisterStartupScript(GetType(), "SetFocus",
" <script>document.getElementById('" + _edITControl.ClientID + "').focus(); </script>");
// 如果编辑控件是DropDownList的话,那么把SelectedValue设置为显示控件的值
if (_edITControl is Label && _displayControl is DropDownList)
{
((Label)_edITControl).Text = ((DropDownList)_displayControl).Text;
}
// 如果编辑控件是TextBox的话则选中文本框内文本
if (_edITControl is Label)
{
((Label)_edITControl).Attributes.Add("onfocus", "this.select()");
}
break;
case ("RefreshList"):
GridView gridView = (GridView)sender;
int rowIndex = Convert.ToInt32(e.CommandArgument);
string value = "";
// 获得单元格里的控件
Control editControl = gridView.Rows[rowIndex].Cells[_firstEdITCellIndex].Controls[1];
// 如果单元格处于编辑模式的话,那么从编辑控件中获取值
if (editControl.Visible)
{
if (editControl is Label)
{
value = ((Label)editControl).Text;
GridView1.EditIndex = -1;
// bind2();
}
}
break;
}
}
protected override void Render(HtmlTextWriter wrITer)
{
foreach (GridViewRow r in GridView1.Rows)
{
if (r.RowType == DataControlRowType.DataRow)
{
for (int columnIndex = _firstEdITCellIndex; columnIndex < r.Cells.Count; columnIndex++)
{
Page.ClientScript.RegisterForEventValidation(r.UniqueID + "$ctl00", columnIndex.ToString());
}
}
}
base.Render(wrITer);
}
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridView _gridView = (GridView)sender;
string key = "";
string value = "";
// NewValues集合里的key
string[] _columnKeys = new string[] { "LastName", "FirstName", "Country" };
if (e.RowIndex > -1)
{
// 循环每一列
for (int i = _firstEdITCellIndex; i < _gridView.Columns.Count; i++)
{
// 获得单元格里的控件
Control _displayControl = _gridView.Rows[e.RowIndex].Cells[i].Controls[0];
Control _edITControl = _gridView.Rows[e.RowIndex].Cells[i].Controls[1];
// 获得列的key
key = _columnKeys[i - _firstEdITCellIndex];
// 如果单元格处于编辑模式的话,那么从编辑控件中获取值
if (_edITControl.Visible)
{
if (_edITControl is TextBox)
{
value = ((TextBox)_edITControl).Text;
}
else if (_edITControl is DropDownList)
{
value = ((DropDownList)_edITControl).SelectedValue;
} // 增加key/value对到NewValues集合
e.NewValues.Add(key, value);
}
// 否则从显示控件中获取值
else
{
value = ((Label)_displayControl).Text.ToString(); // 增加key/value对到NewValues集合
e.NewValues.Add(key, value);
}
}
}
}
}