第七章 业务数据库的管理(十)-- 打印表格行

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值