7.6 定义要打印的表格
7.6.3 设置打印表格行
......
//增加行按钮
private void Button1_Click(object sender, System.EventArgs e)
{
//获取已定义行数,加1就是新加行的行序号
string strSql="select RowID from PrintedRows where PrintedTableID="+ViewState
["printedtableid"].ToString();
Base basecode=new Base();
DataSet ds=basecode.SQLExeDataSet(strSql);
//新加行的行序号(打印表格时按照行序号顺序打印)
string rowserialnumber=Convert.ToString(ds.Tables[0].Rows.Count+1);
//添加字段行
if(CheckBox1.Checked==false)
{
string includedfields="";
int maxcolumns=(int)ViewState["maxcolumns"];
//int maxcolumns=int.Parse(ViewState["maxcolumns"].ToString());
//记录当前在ListBox中所选择的字段个数(不能大于表格最大列数)
int curcolnum=0;
for(int i=0;i<ListBox1.Items.Count;i++)
{
if(ListBox1.Items[i].Selected==true)
{
includedfields=includedfields+ListBox1.Items[i].Value+",";
curcolnum=curcolnum+1;
}
}
if(curcolnum>maxcolumns)
{
Label1.Text="每一行的字段个数不能超过"+maxcolumns+"个";
return;
}
//如果没有输入新加行要跨的自然行数
if(TextBox1.Text.Trim() == "")
{
strSql="insert into PrintedRows(PrintedTableID,IncludedFields,
RowSerialNumber) values("+ViewState["printedtableid"].ToString()
+",'"+includedfields+"',"+rowserialnumber+")";
}
else
{
Regex reg=new Regex(@"^[1-9]\d*$");
if(! reg.IsMatch(TextBox1.Text.Trim()))
{
Label1.Text="跨自然行行数为大于等于1的整数";
return;
}
strSql="insert into PrintedRows(PrintedTableID,IncludedFields,
RowSpan,RowSerialNumber) values("+ViewState["printedtableid"]
.ToString()+",'"+includedfields+"',"+TextBox1.Text.Trim()
+","+rowserialnumber+")";
}
if(! basecode.SQLExeNonQuery(strSql))
{
Label1.Text=basecode.BaseSqlErrDes;
return;
}
BindGrid();
//重新初始化ListBox
InitialListBox();
}
else//添加自定义行
{
if(TextBox2.Text.Trim() == "")
{
Label1.Text="自定义行名称不能为空";
return;
}
if(TextBox3.Text.Trim() == "")
{
strSql="insert into PrintedRows(PrintedTableID,IsSelfDefined,
SelfDefinedRowName,RowSerialNumber) values("
+ViewState["printedtableid"].ToString()
+",'Y',@SelfDefinedRowName,"+rowserialnumber+")";
}
else
{
Regex reg=new Regex(@"^[1-9]\d*$");
if(! reg.IsMatch(TextBox3.Text.Trim()))
{
Label1.Text="跨自然行行数为大于等于1的整数";
return;
}
strSql="insert into PrintedRows(PrintedTableID,IsSelfDefined,
SelfDefinedRowName,RowSpan,RowSerialNumber) values("
+ViewState["printedtableid"].ToString()+",'Y',@SelfDefinedRowName,"
+TextBox3.Text.Trim()+","+rowserialnumber+")";
}
SqlCommand cmd=new SqlCommand(strSql);
cmd.Parameters.Add("@SelfDefinedRowName",SqlDbType.VarChar);
cmd.Parameters["@SelfDefinedRowName"].Value=TextBox2.Text.Trim();
if(! basecode.SQLExeNonQuery_proc(cmd))
{
Label1.Text=basecode.BaseSqlErrDes;
return;
}
BindGrid();
}
}
private void DataGrid1_PageIndexChanged(object source,
System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
DataGrid1.CurrentPageIndex=e.NewPageIndex;
BindGrid();
}
private void DataGrid1_DeleteCommand(object source,
System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
string rowid=DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
string strSql="delete PrintedRows where RowID="+rowid;
Base basecode=new Base();
if(! basecode.SQLExeNonQuery(strSql))
{
Label1.Text=basecode.BaseSqlErrDes;
return;
}
BindGrid();
//重新初始化ListBox
InitialListBox();
}
private void DataGrid1_ItemDataBound(object sender,
System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType == ListItemType.Item
|| e.Item.ItemType == ListItemType.AlternatingItem)
{
LinkButton btn=(LinkButton)e.Item.Cells[7].Controls[1];
btn.Attributes.Add("onclick","JavaScript:return confirm('确定删除吗?')");
}
}
//修改行
private void Button3_Click(object sender, System.EventArgs e)
{
string rowid=ViewState["editedrowid"].ToString();
//修改字段行
if(CheckBox1.Checked==false)
{
string includedfields="";
int maxcolumns=(int)ViewState["maxcolumns"];
int curcolnum=0;
for(int i=0;i<ListBox1.Items.Count;i++)
{
if(ListBox1.Items[i].Selected==true)
{
includedfields=includedfields+ListBox1.Items[i].Value+",";
curcolnum=curcolnum+1;
}
}
if(curcolnum>maxcolumns)
{
Label1.Text="每一行的字段个数不能超过"+maxcolumns+"个";
return;
}
string strSql;
if(TextBox1.Text.Trim() == "")
{
strSql="update PrintedRows set IncludedFields='"+includedfields+"'"
+" where RowID="+rowid;
}
else
{
Regex reg=new Regex(@"^[1-9]\d*$");
if(! reg.IsMatch(TextBox1.Text.Trim()))
{
Label1.Text="跨自然行行数为大于等于1的整数";
return;
}
strSql="update PrintedRows set IncludedFields='"+includedfields
+"',RowSpan="+TextBox1.Text.Trim()+" where RowID="+rowid;
}
Base basecode=new Base();
if(! basecode.SQLExeNonQuery(strSql))
{
Label1.Text=basecode.BaseSqlErrDes;
return;
}
}
else//添加自定义行
{
if(TextBox2.Text.Trim() == "")
{
Label1.Text="自定义行名称不能为空";
return;
}
string strSql;
if(TextBox3.Text.Trim() == "")
{
strSql="update PrintedRows set PrintedTableID="
+ViewState["printedtableid"].ToString()+",IsSelfDefined='Y',
SelfDefinedRowName=@SelfDefinedRowName where RowID="+rowid;
}
else
{
Regex reg=new Regex(@"^[1-9]\d*$");
if(! reg.IsMatch(TextBox3.Text.Trim()))
{
Label1.Text="跨自然行行数为大于等于1的整数";
return;
}
strSql="update PrintedRows set PrintedTableID="
+ViewState["printedtableid"].ToString()
+",IsSelfDefined='Y',SelfDefinedRowName=@SelfDefinedRowName,
RowSpan="+TextBox3.Text.Trim()+" where RowID="+rowid;
}
SqlCommand cmd=new SqlCommand(strSql);
cmd.Parameters.Add("@SelfDefinedRowName",SqlDbType.VarChar);
cmd.Parameters["@SelfDefinedRowName"].Value=TextBox2.Text.Trim();
Base basecode=new Base();
if(! basecode.SQLExeNonQuery_proc(cmd))
{
Label1.Text=basecode.BaseSqlErrDes;
return;
}
}
//重新设置控件
BindGrid();
InitialListBox();
TextBox1.Text="";
TextBox2.Text="";
TextBox3.Text="";
CheckBox1.Visible=true;
Label2.Visible=true;
//显示增加行按钮
Button1.Visible=true;
Button3.Visible=false;
}
//调整行编号
private void DataGrid1_EditCommand(object source,
System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
DataGrid1.EditItemIndex=e.Item.ItemIndex;
BindGrid();
}
//设置修改行时使用的ListBox控件的项
void ChangeListBoxForEdit(string rowid)
{
string tablename=ViewState["tablename"].ToString();
string tableower=ViewState["tableower"].ToString();
string[] printedfieldsarray=(string[])ViewState["printedfieldsarray"];
//获取PrintedRows中除当前修改行之外已经包含的打印字段
Base basecode=new Base();
string strSql="select IncludedFields from PrintedRows where PrintedTableID="
+ViewState["printedtableid"].ToString()+" and RowID != "+rowid;
DataSet includedfieldsds=basecode.SQLExeDataSet(strSql);
string includedfieldstr="";
for(int k=0;k<includedfieldsds.Tables[0].Rows.Count;k++)
{
if(includedfieldsds.Tables[0].Rows[k]["IncludedFields"] != DBNull.Value)
{
includedfieldstr=includedfieldstr+includedfieldsds
.Tables[0].Rows[k]["IncludedFields"].ToString().Trim();
}
}
string[] includedfieldsarray=new Tools().StringSplit(includedfieldstr,",");
//获取打印表格所包含字段中除PrintedRows中(除当前修改行之外)已包含的打印字段之外
//的字段的中文名等
strSql="select FieldAlias,FieldName from RelatedTablesFields where
TableName='"+tablename+"' and TableOwer='"+tableower+"' and
(FieldName='"+printedfieldsarray[0]+"'";
//i<printedfieldsarray.Length-1因为最后一项为空格
for(int i=1;i<printedfieldsarray.Length-1;i++)
{
strSql=strSql+" or FieldName='"+printedfieldsarray[i]+"'";
}
strSql=strSql+") and (FieldName is not null";
for(int j=0;j<includedfieldsarray.Length-1;j++)
{
strSql=strSql+" and FieldName != '"+includedfieldsarray[j]+"'";
}
strSql=strSql+")";
DataSet ds=basecode.SQLExeDataSet(strSql);
ListBox1.Rows=3;
ListBox1.SelectionMode=ListSelectionMode.Multiple;
ListBox1.DataSource=ds;
ListBox1.DataTextField="FieldAlias";
ListBox1.DataValueField="FieldName";
ListBox1.DataBind();
//设置ListBox中当前修改行的已包含字段
strSql="select IncludedFields from PrintedRows where RowID="+rowid;
DataSet currentrowfields=basecode.SQLExeDataSet(strSql);
string[] currentrowfieldsarray=new Tools().StringSplit(currentrowfields
.Tables[0].Rows[0]["IncludedFields"].ToString(),",");
for(int j=0;j<ListBox1.Items.Count;j++)
{
for(int k=0;k<currentrowfieldsarray.Length-1;k++)
{
if(ListBox1.Items[j].Value == currentrowfieldsarray[k])
ListBox1.Items[j].Selected=true;
}
}
}
//修改按钮
private void EditRowCommand(object source,
System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if(e.CommandName == "EditRow")
{
string rowid=DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
ViewState["editedrowid"]=rowid;
string strSql="select * from PrintedRows where RowID="+rowid;
DataSet ds=new Base().SQLExeDataSet(strSql);
if(ds.Tables[0].Rows[0]["IsSelfDefined"].ToString() == "Y")
{
TextBox2.Text=ds.Tables[0].Rows[0]["SelfDefinedRowName"].ToString();
TextBox3.Text=ds.Tables[0].Rows[0]["RowSpan"].ToString();
CheckBox1.Checked=true;
CheckBox1.Visible=false;
Label2.Visible=false;
}
else
{
TextBox1.Text=ds.Tables[0].Rows[0]["RowSpan"].ToString();
CheckBox1.Checked=false;
CheckBox1.Visible=false;
Label2.Visible=false;
ChangeListBoxForEdit(rowid);
}
//显示修改行按钮
Button1.Visible=false;
Button3.Visible=true;
}
}
//修改行序号
private void DataGrid1_UpdateCommand(object source,
System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
string rowserialnumber=((TextBox)e.Item.Cells[1].Controls[0]).Text.Trim();
string strSql="update PrintedRows set RowSerialNumber="+rowserialnumber
+" where RowID="+DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
Base basecode=new Base();
if(! basecode.SQLExeNonQuery(strSql))
{
Label1.Text=basecode.BaseSqlErrDes;
return;
}
DataGrid1.EditItemIndex=-1;
BindGrid();
}
//取消修改行序号
private void DataGrid1_CancelCommand(object source,
System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
DataGrid1.EditItemIndex=-1;
BindGrid();
}
//取消修改行按钮
private void Button2_Click(object sender, System.EventArgs e)
{
//重新设置控件
InitialListBox();
TextBox1.Text="";
TextBox2.Text="";
TextBox3.Text="";
CheckBox1.Visible=true;
Label2.Visible=true;
//显示增加行按钮
Button1.Visible=true;
Button3.Visible=false;
}
}
}