c#技巧

c#的一些技巧 
1.怎样定制VC#DataGrid列标题?  
DataGridTableStyle dgts = new DataGridTableStyle();  
dgts.MappingName = "myTable"; //myTable为要载入数据的DataTable  
DataGridTextBoxColumn dgcs = new DataGridTextBoxColumn();  
dgcs.MappingName = "title_id";  dgcs.HeaderText = "标题ID";  
dgts.GridColumnStyles.Add(dgcs);       
。。。  
dataGrid1.TableStyles.Add(dgts);  

2.检索某个字段为空的所有记录的条件语句怎么写?  
...where col_name is null  

3.如何在c# Winform应用中接收回车键输入?  
设一下form的AcceptButton.  

4.比如Oracle中的NUMBER(15),在Sql Server中应是什么? 
 NUMBER(15):用numeric,精度15试试。 

 5.sql server的应用like语句的存储过程怎样写?  
select * from mytable where haoma like ‘%’ + @hao + ‘%’ 

 6.vc# winform中如何让textBox接受回车键消息(假没没有按钮的情况下)? 
 private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)   {    
 if(e.KeyChar != (char)13)
       return;     
else    //do something; 
 } 

 7.为什么(Int32)cmd.ExecuteScalar()赋值给Int32变量时提示转换无效? 
 Int32.Parse(cmd.ExecuteScalar().ToString()); 

 8.DataSource为子表的DataGrid里怎样增加一个列以显示母表中的某个字段?  在子表里手动添加一个列。  DataColumn dc = new DataColumn("newCol", Type.GetType("System.String" );  dc.Expression = "Parent.parentColumnName";  dt.Columns.Add(dc); //dt为子表  

9.怎样使DataGrid显示DataTable中某列的数据时只显示某一部分?
  select ..., SUBSTR(string, start_index, end_index) as ***, *** from ***  

10.如何让winform的combobox只能选不能输入? 
 DropDownStyle 属性确定用户能否在文本部分中输入新值以及列表部分是否总显示。 
 值:  DropDown --- 文本部分可编辑。用户必须单击箭头按钮来显示列表部分。  
 DropDownList --- 用户不能直接编辑文本部分。用户必须单击箭头按钮来显示列表部分。   
Simple --- 文本部分可编辑。列表部分总可见。  

11.怎样使winform的DataGrid里显示的日期只显示年月日部分,去掉时间?  
sql语句里加上to_date(日期字段,'yyyy-mm-dd')  

12.怎样把数据库表的二个列合并成一个列Fill进DataSet里?  
dcChehao = new DataColumn("newColumnName", typeof(string));  dcChehao.Expression = "columnName1+columnName2";  dt.Columns.Add(dcChehao);  Oracle:  select col1||col2 from table   sql server:  select col1+col2 from table  

13.如何从合并后的字段里提取出括号内的文字作为DataGrid或其它绑定控件的显示内容?即把合并后的字段内容里的左括号(和右括号)之间的文字提取出来。
  Select COL1,COL2, case   when COL3 like ‘%(%’ THEN substr(COL3, INSTR(COL3, ‘(’  +1, INSTR(COL3,‘)’)-INSTR(COL3,‘(’)-1)  end as COL3  from MY_TABLE 

 14.当用鼠标滚轮浏览DataGrid数据超过一定范围DataGrid会失去焦点。怎样解决?
  this.dataGrid1.MouseWheel+=new MouseEventHandler(dataGrid1_MouseWheel);   private void dataGrid1_MouseWheel(object sender, MouseEventArgs e)   {     this.dataGrid1.Select();   } 

 15.怎样把键盘输入的‘+’符号变成‘A’?  textBox的KeyPress事件中
  if(e.KeyChar == '+')  {    SendKeys.Send("A" ;    e.Handled = true;  } 

 16.怎样使Winform启动时直接最大化?  
this.WindowState = FormWindowState.Maximized;  

17.c#怎样获取当前日期及时间,在sql语句里又是什么?
  c#: DateTime.Now  sql server: GetDate() 

 18.怎样访问winform DataGrid的某一行某一列,或每一行每一列?  
dataGrid[row,col]  

19.怎样为DataTable进行汇总,比如DataTable的某列值‘延吉'的列为多少? 
 dt.Select("城市='延吉'" .Length; 

 20.DataGrid数据导出到Excel后0212等会变成212。怎样使它导出后继续显示为0212? 
 range.NumberFormat = "0000"; 

 21.  
① 怎样把DataGrid的数据导出到Excel以供打印? 
② 之前已经为DataGrid设置了TableStyle,即自定义了列标题和要显示的列,如果想以自定义的视图导出数据该怎么办? 
③ 把数据导出到Excel后,怎样为它设置边框啊?  
④ 怎样使从DataGrid导出到Excel的某个列居中对齐? 
⑤ 数据从DataGrid导出到Excel后,怎样使标题行在打印时出现在每一页?  
⑥ DataGrid数据导出到Excel后打印时每一页显示’当前页/共几页’,怎样实现?  

答:
①  private void button1_Click(object sender, System.EventArgs e) 
 {    
int row_index, col_index;    
row_index = 1;    
col_index = 1;    
Excel.ApplicationClass excel = new Excel.ApplicationClass();    
excel.Workbooks.Add(true);                    
DataTable dt = ds.Tables["table"];                    
foreach(DataColumn dcHeader in dt.Columns)       
 excel.Cells[row_index, col_index++] = dcHeader.ColumnName;              
foreach(DataRow dr in dt.Rows)    
{
      col_index = 0;
          foreach(DataColumn dc in dt.Columns)          
{            excel.Cells[row_index+1, col_index+1] = dr[dc]; 
           col_index++;          
}      
row_index++;      }
      excel.Visible = true;      }  
private void Form1_Load(object sender, System.EventArgs e) 
 {  
    SqlConnection conn = new SqlConnection("server=tao;uid=sa;pwd=;database=pubs" ;  
    conn.Open();  
    SqlDataAdapter da = new SqlDataAdapter("select * from authors", conn);  
    ds = new DataSet();
    da.Fill(ds, "table"
    dataGrid1.DataSource = ds;  
    dataGrid1.DataMember = "table"; 
 } 

 ②dataGrid1.TableStyles[0].GridColumnStyles[index].HeaderText;//index可以从0~dataGrid1.TableStyles[0].GridColumnStyles.Count遍历。 

 ③ Excel.Range range;  
   range=worksheet.get_Range(worksheet.Cells[1,1],xSt.Cells[ds.Tables[0].Rows.Count+1,ds.Tables[0].Columns.Count]);  
   range.BorderAround(Excel.XlLineStyle.xlContinuous,Excel.XlBorderWeight.xlThin,Excel.XlColorIndex.xlColorIndexAutomatic,null);
   range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic;
   range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].LineStyle =Excel.XlLineStyle.xlContinuous;
   range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].Weight =Excel.XlBorderWeight.xlThin;
   range.Borders[Excel.XlBordersIndex.xlInsideVertical].ColorIndex =Excel.XlColorIndex.xlColorIndexAutomatic;
  range.Borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle = Excel.XlLineStyle.xlContinuous;
  range.Borders[Excel.XlBordersIndex.xlInsideVertical].Weight = Excel.XlBorderWeight.xlThin;

  ④ range.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter
  ⑤ worksheet.PageSetup.PrintTitleRows = "$1:$1";
  ⑥ worksheet.PageSetup.CenterFooter = "第&P页 / 共&N页";

  22.当把DataGrid的Cell内容赋值到Excel的过程中想在DataGrid的CaptionText上显示进度,但不显示。WHY?
  ...  dataGrid1.CaptionText = "正在导出:" + (row + 1) + "/" + row_cnt;
  System.Windows.Forms.Application.DoEvents();
  ...  处理当前在消息队列中的所有Windows消息。
  当运行Windows窗体时,它将创建新窗体,然后该窗体等待处理事件。该窗体在每次处理事件时,均将处理与该事件关联的所有代码。所有其他事件在队列中等待。在代码处理事件时,应用程序并不响应。如果在代码中调用DoEvents,则应用程序可以处理其他事件。
  如果从代码中移除DoEvents,那么在按钮的单机事件处理程序执行结束以前,窗体不会重新绘制。通常在循环中使用该方法来处理消息。

  23.怎样从Flash调用外部程序,如一个C#编译后生成的.exe?  fscommand("exec", "应用程序.exe" ;
  ① 必须把flash发布为.exe
  ② 必须在flash生成的.exe文件所在目录建一个名为fscommand的子目录,并把要调用的可执行程序拷贝到那里。

  24.有没有办法用代码控制DataGrid的上下、左右的滚动?
  dataGrid1.Select();
  SendKeys.Send("{PGUP}" ;
  SendKeys.Send("{PGDN}" ;
  SendKeys.Send("{^{LEFT}" ; // Ctrl+左方向键
  SendKeys.Send("{^{RIGHT}" ; // Ctrl+右方向键

  25.怎样使两个DataGrid绑定两个主从关系的表?
  DataGrid1.DataSource = ds;
  DataGrid1.DataMember = "母表";
  ...  
  DataGrid2.DataSouce = ds;
  DataGrid2.DataMember = "母表.关系名";

  26.assembly的版本号怎样才能自动生成?特别是在Console下没有通过VStudio环境编写程序时。
  关键是AssemblyInfo.cs里的[assembly: AssemblyVersion("1.0.*" ],命令行编译时包含AssemblyInfo.cs 

 27.怎样建立一个Shared Assembly?
  用sn.exe生成一个Strong Name:keyfile.sn,放在源程序目录下
  在项目的AssemblyInfo.cs里[assembly: AssemblyKeyFile("..//..//keyfile.sn" ]
  生成dll后,用gacutil /i myDll.dll放进Global Assembly Cach.

  28.在Oracle里如何取得某字段第一个字母为大写英文A~Z之间的记录?
  select * from table where ascii(substr(字段,1,1)) between ascii('A') and ascii('Z')  29.怎样取得当前Assembly的版本号?
  Process current = Process.GetCurrentProcess();
   FileVersionInfo myFileVersionInfo = FileVersionInfo.GetVersionInfo(current.MainModule.FileName);
  Console.WriteLine(myFileVersionInfo.FileVersion);

  30.怎样制作一个简单的winform安装程序?
  ① 建一个WinForm应用程序,最最简单的那种。运行。
  ② 添加新项目->安装和部署项目,‘模板’选择‘安装向导’。
  ③ 连续二个‘下一步’,在‘选择包括的项目输出’步骤打勾‘主输出来自’,连续两个‘下一步’,‘完成’。
  ④ 生成。
  ⑤ 到项目目录下找到Setup.exe(还有一个.msi和.ini文件),执行。

  31.怎样通过winform安装程序在Sql Server数据库上建表?
  ① [项目]—[添加新项]  类别:代码;模板:安装程序类。
  名称:MyInstaller.cs
  ② 在SQL Server建立一个表,再[所有任务]—[生成SQL脚本]。
  生成类似如下脚本(注意:把所有GO语句去掉):
  if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[MyTable]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  drop table [dbo].[MyTable]
  CREATE TABLE [dbo].[MyTable] (
      [ID] [int] NOT NULL ,
      [NAME] [nchar] (4) COLLATE Chinese_PRC_CI_AS NOT NULL
        ON [PRIMARY]  ALTER TABLE [dbo].[MyTable] WITH NOCHECK ADD
       CONSTRAINT [PK_MyTable] PRIMARY KEY CLUSTERED
       (          [ID]        ON [PRIMARY]

   ③ [项目]—[添加现有项]。mytable.sql—[生成操作]-[嵌入的资源]。
  ④ 将MyInstaller.cs切换到代码视图,添加下列代码:
  先增加:  using System.Reflection;  using System.IO;
  然后:  private string GetSql(string Name)
   {
     try
     {
       Assembly Asm = Assembly.GetExecutingAssembly();
       Stream strm = Asm.GetManifestResourceStream(Asm.GetName().Name + "." + Name);            StreamReader reader = new StreamReader(strm);
       return reader.ReadToEnd();
     }
     catch (Exception ex)
     {
       Console.Write("In GetSql:"+ex.Message);
       throw ex;
     }
   }

   private void ExecuteSql(string DataBaseName,string Sql)
   {
   System.Data.SqlClient.SqlConnection sqlConn = new System.Data.SqlClient.SqlConnection();
  sqlConn.ConnectionString = "server=myserver;uid=sa;password=;database=master";
  System.Data.SqlClient.SqlCommand Command = new System.Data.SqlClient.SqlCommand(Sql,sqlConn);
   Command.Connection.Open();
   Command.Connection.ChangeDatabase(DataBaseName); 
  try 
  {
   Command.ExecuteNonQuery();
   }
   finally
   {
   Command.Connection.Close();
   }
   }

  protected void AddDBTable(string strDBName)
   {
       try
       {
           ExecuteSql("master","create DATABASE "+ strDBName);
           ExecuteSql(strDBName,GetSql("mytable.sql" );
       }
       catch(Exception ex)
       {
           Console.Write("In exception handler :"+ex.Message);
       }
   }

   public override void Install(System.Collections.IDictionary stateSaver)
   {
       base.Install(stateSaver);
       AddDBTable("MyDB" ; //建一个名为MyDB的DataBase
  }

  ⑤ [添加新项目]—[项目类型:安装和部署项目]—[模板:安装项目]—[名称:MySetup]。
  ⑥ [应用程序文件夹]—[添加]—[项目输出]—[主输出]。
  ⑦ 解决方案资源管理器—右键—[安装项目(MySetup)]—[视图]—[自定义操作]。[安装]—[添加自定义操作]—[双击:应用程序文件夹]的[主输出来自***(活动)]。

  32.怎样用TreeView显示父子关系的数据库表(winform)?
  三个表a1,a2,a3, a1为a2看母表,a2为a3的母表。
  a1: id, name
  a2: id, parent_id, name
  a3: id, parent_id, name
  用三个DataAdapter把三个表各自Fill进DataSet的三个表。
  用DataRelation设置好三个表之间的关系。

  foreach(DataRow drA1 in ds.Tables["a1"].Rows)
  {
   tn1 = new TreeNode(drA1["name"].ToString());
   treeView1.Nodes.Add(tn1);
   foreach(DataRow drA2 in drA1.GetChildRows("a1a2" )
   {
    tn2 = new TreeNode(drA2["name"].ToString());
    tn1.Nodes.Add(tn2);
    foreach(DataRow drA3 in drA2.GetChildRows("a2a3" )
    {
     tn3 = new TreeNode(drA3["name"].ToString());
     tn2.Nodes.Add(tn3);
    }
   }
  }  

33.怎样从一个form传递数据到另一个form?  假设Form2的数据要传到Form1的TextBox。  
在Form2:  
// Define delegate  public delegate void SendData(object sender);  
// Create instance  public SendData sendData;  
在Form2的按钮单击事件或其它事件代码中:
  if(sendData != null) 
  {
   sendData(txtBoxAtForm2);
   }  
  this.Close(); //关闭Form2 

 在Form1的弹出Form2的代码中:
  Form2 form2 = new Form2();
  form2.sendData = new Form2.SendData(MyFunction);  
  form2.ShowDialog(); 
 ==================== 
 private void MyFunction(object sender) 
 {
    textBox1.Text = ((TextBox)sender).Text;
  }  

把DataGrid导出到Excel [转]

youedatagrid.datasource=yourgetdatasourcemethord() 

youedatagrid.databind();


Response.Clear();
Response.Buffer=true;
Response.ContentType="application/vnd.ms-excel";
Response.Charset="";
this.EnableViewState=false; 


stringwriter  sw=new  stringwriter();
HtmlTextWriter  htw=new  HtmlTextWriter(sw);
YoueDataGrid.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();

DataGrid导出到Excel的时候,某些数字内容显示不正确,"3.62201E+14"的格式

webform中,在datagrid的itemdatabound事件内

if(e.item.itemtype  ==  ListItemType.Item  ||  e.Item.ItemType  ==  ListItemType.AlternatingItem)
{
e.Item.Cells[0].Attributes.Add("style","vnd.ms-excel.numberformat:@";

这样导出就没有问题了


在WinForm内Excel.Range  range  =  (Excel.Range)worksheet.Cells[1,1];
//设置单元格数字内容显示格式
range.NumberFormat  =  Excel.XlParameterDataType.xlParamTypeUnknown;
这样导出就没有问题了。

DataGrid输出到Excel并进行格式化处理

在我们把datagrid上的数据导入到excel的时候,如果遇到比较长的数字字符串,比如身份证号码,就会在excel里当成数字看待,并转换成科学计数法的格式,造成数据的丢失,下面这个方法就解决了这个问题,并示例如何进行其它的格式化。

查看例子

OutPutExcel.aspx

<%@ Page language="c#" Codebehind="OutPutExcel.aspx.cs"
 AutoEventWireup="false" Inherits="eMeng.Exam.OutPutExcel" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>OutPutExcel</title>
</HEAD>

<form id="Form1" method="post" runat="server">
<aspataGrid id="DataGrid1" runat="server"></aspataGrid>
<asp:Button id="Button1" runat="server" Text="输出到Excel"></asp:Button>
</form>

</HTML>


OutPutExcel.aspx.cs

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace eMeng.Exam
{
/// <summary>
/// OutPutExcel 的摘要说明。
/// </summary>
public class OutPutExcel : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.DataGrid DataGrid1;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
DataGrid1.DataSource=CreateDataSource();
DataGrid1.DataBind();
}
/// <summary>
/// 创建数据源
/// </summary>
/// <returns>DataView</returns>
ICollection CreateDataSource() 
{

DataTable dt = new DataTable();
DataRow dr;
dt.Columns.Add(new DataColumn("身份证号码", typeof(string)));
dt.Columns.Add(new DataColumn("图书单价",typeof(decimal)));
dt.Columns.Add(new DataColumn("购买数量",typeof(Int32)));
dt.Columns.Add(new DataColumn("总价格",typeof(decimal)));


for (int i = 0; i < 30; i++) 
{
dr = dt.NewRow();

dr[0] = "123456789123456789";
dr[1] = 100 * i /3.0;
dr[2] = i + 5;
dr[3] = (decimal)dr[1] * (Int32)dr[2];
dt.Rows.Add(dr);
}
DataView dv = new DataView(dt);
return dv;
}
/// <summary>
/// 输出到Excel
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Button1_Click(object sender, System.EventArgs e)
{
Response.Clear(); 
Response.Buffer= true; 
Response.Charset="GB2312";    
Response.AppendHeader("Content-Disposition","attachment;filename=FileName.xls"
Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312";//设置输出流为简体中文
Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。 
this.EnableViewState = false;    
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN",true);
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad); 
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
this.DataGrid1.RenderControl(oHtmlTextWriter); 
Response.Write(oStringWriter.ToString());
Response.End();
}

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{    
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.DataGrid1.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
e.Item.Cells[0].Attributes.Add("style","vnd.ms-excel.numberformat:@";
e.Item.Cells[3].Attributes.Add("style","vnd.ms-excel.numberformat:¥#,###.00";
}
}
}
}

loading...

 

2006-4-17
javascript配合DataGrid操作常用函数

javascript实现datagrid客户端checkbox列的全选,反选 

/**//* 分页
    参数说明:
    prefix:前缀;chkAll:全选框;chkSingle:单选框ID
    
    使用方法:
    if(e.Item.ItemType == ListItemType.Header)
    {
        ((CheckBox)e.Item.Cells[1].FindControl("chkAll").Attributes.Add("onclick","CheckAll('" + this.dg.ClientID.ToString() + "','chkAll','chkSingle');";
    }
*/
function CheckAll(prefix,chkAll,chkSingle)
{
    var indexChkAll;
    if(prefix.length != 0)
    {
        indexChkAll        = prefix + "__ctl2_" + chkAll;
    }
    else
    {
        indexChkAll        = chkAll;
    }
    var objChkAll = document.getElementById(indexChkAll);
    var tempObj;
    for(var i=0;i<document.forms[0].elements.length;i++)
    {    
        tempObj = document.forms[0].elements[i];
        if(tempObj.type == "checkbox" && tempObj.id != indexChkAll && tempObj.id.indexOf(chkSingle) != -1)
        {
            tempObj.checked = objChkAll.checked;
        }
    }
}
/**//* 分页
    参数说明:
    prefix:前缀;chkAll:全选框;chkSingle:单选框ID
    
    使用方法:
    if(e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
    {
        ((CheckBox)e.Item.Cells[1].FindControl("chkSingle").Attributes.Add("onclick","CheckSingle('" + this.dg.ClientID.ToString() + "','chkAll','chkSingle');";
    }
*/
function CheckSingle(prefix,chkAll,chkSingle)
{
    var indexChkAll;
    if(prefix.length != 0)
    {
        indexChkAll        = prefix + "__ctl2_" + chkAll;
    }
    else
    {
        indexChkAll        = chkAll;
    }
    var objChkAll = document.getElementById(indexChkAll);
    var tempObj;
    var allCount    = 0;
    var checkCount    = 0;
    for(var i=0;i<document.forms[0].elements.length;i++)
    {    
        tempObj = document.forms[0].elements[i];
        if(tempObj.type == "checkbox" && tempObj.id != indexChkAll && tempObj.id.indexOf(chkSingle) != -1)
        {
            if(tempObj.checked)
            {
                checkCount++;
            }
            else
            {
                objChkAll.checked = false;
                //break;
            }
            allCount++;
        }
    }
    if(checkCount != allCount)
    {
        objChkAll.checked = false;
    }
    else
    {
        if(allCount != 0)
        {
            objChkAll.checked = true;
        }
    }
}
/**//*
    参数说明:
    prefix:前缀;chkAll:全选框;chkSingle:单选框ID
    type:1【全选】,2【反选】,3【取消】
    
    使用方法:
    this.btnSelectAll.Attributes.Add("onClick","CheckType('" + this.dg.ClientID.ToString() + "','chkAll','chkSingle',1);";
    this.btnUnSelectAll.Attributes.Add("onClick","CheckType('" + this.dg.ClientID.ToString() + "','chkAll','chkSingle',2);";
    this.btnCancelSelect.Attributes.Add("onClick","CheckType('" + this.dg.ClientID.ToString() + "','chkAll','chkSingle',3);";
*/
function CheckType(prefix,chkAll,chkSingle,type)
{
    var indexChkAll;
    if(prefix.length != 0)
    {
        indexChkAll        = prefix + "__ctl2_" + chkAll;
    }
    else
    {
        indexChkAll        = chkAll;
    }
    var objChkAll = document.getElementById(indexChkAll);
    var tempObj;
    var allCount    = 0;
    var checkCount    = 0;
    for(var i=0;i<document.forms[0].elements.length;i++)
    {    
        tempObj = document.forms[0].elements[i];
        if(tempObj.type == "checkbox" && tempObj.id != indexChkAll && tempObj.id.indexOf(chkSingle) != -1)
        {
            switch(type)
            {
                case 1:
                    tempObj.checked = true;
                    break;
                case 2:
                    tempObj.checked = !tempObj.checked;
                    break;
                case 3:
                    tempObj.checked = false;
                    break;
            }
            if(tempObj.checked)
            {
                checkCount++;
            }
            allCount++;
        }
    }
    if(checkCount != allCount)
    {
        objChkAll.checked = false;
    }
    else
    {
        if(allCount != 0)
        {
            objChkAll.checked = true;
        }
    }
    window.event.returnValue = false;
    return false;
}

/**//*
    参数说明:
    prefix:前缀;chkAll:全选框;chkSingle:单选框ID

    使用方法:
    this.btnDelete.Attributes.Add("onClick","SubmitCheckBox('" + this.dg.ClientID.ToString() + "','chkAll','chkSingle');";
*/
function SubmitCheckBox(prefix,chkAll,chkSingle,msg)
{
    var indexChkAll;
    if(prefix.length != 0)
    {
        indexChkAll        = prefix + "__ctl2_" + chkAll;
    }
    else
    {
        indexChkAll        = chkAll;
    }
    var objChkAll = document.getElementById(indexChkAll);
    
    var tempObj;
    var allCount    = 0;
    var checkCount    = 0;
    for(var i=0;i<document.forms[0].elements.length;i++)
    {    
        tempObj = document.forms[0].elements[i];
        if(tempObj.type == "checkbox" && tempObj.id != indexChkAll && tempObj.id.indexOf(chkSingle) != -1)
        {
            if(tempObj.checked)
            {
                checkCount++;
            }
            allCount++;
        }
    }
    if(allCount == 0) //没有数据
    {
        window.alert("当前没有" + msg + "可供删除";
        window.event.returnValue = false;
        return false;
    }
    else
    {
        if(checkCount == 0)
        {
            window.alert("没有选中要删除的" + msg + "";
            window.event.returnValue = false;
            return false;
        }
        else
        {
            //if(window.confirm("确定要删除当前选中的【" + checkCount.toString() + "】项吗?" == false)
            if(window.confirm("确定要删除当前选中的" + msg + "吗?" == false)
            {
                window.event.returnValue = false;
                return false;
            }
        }
    }

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值