GRIDVIEW一直没用过.现在把它的代码放在这里. 以备不时之需
<
asp:GridView ID
=
"
GridView1
"
runat
=
"
server
"
Height
=
"
144px
"
Width
=
"
768px
"
AllowPaging
=
"
True
"
CellPadding
=
"
4
"
ForeColor
=
"
#333333
"
GridLines
=
"
None
"
OnPageIndexChanging
=
"
GridView1_PageIndexChanging
"
PageSize
=
"
5
"
AutoGenerateColumns
=
"
false
"
OnRowCancelingEdit
=
"
GridView1_RowCancelingEdit
"
OnRowDeleting
=
"
GridView1_RowDeleting
"
OnRowEditing
=
"
GridView1_RowEditing
"
OnRowUpdating
=
"
GridView1_RowUpdating
"
>
<
Columns
>
<
asp:BoundField DataField
=
"
u_id
"
HeaderText
=
"
用户ID
"
ReadOnly
=
"
True
"
/>
<
asp:BoundField DataField
=
"
u_name
"
HeaderText
=
"
用户名
"
/>
<
asp:BoundField DataField
=
"
u_age
"
HeaderText
=
"
用户年龄
"
/>
<
asp:BoundField DataField
=
"
u_sex
"
HeaderText
=
"
用户性别
"
/>
<
asp:BoundField DataField
=
"
u_phone
"
HeaderText
=
"
用户电话
"
/>
<
asp:BoundField DataField
=
"
u_email
"
HeaderText
=
"
用户Email
"
/>
<
asp:BoundField DataField
=
"
u_address
"
HeaderText
=
"
用户地址
"
/>
<
asp:CommandField HeaderText
=
"
选择
"
ShowSelectButton
=
"
true
"
/>
<
asp:CommandField HeaderText
=
"
删除
"
ShowDeleteButton
=
"
true
"
/>
<
asp:CommandField HeaderText
=
"
编辑
"
ShowEditButton
=
"
true
"
/>
</
Columns
>
<
FooterStyle BackColor
=
"
#990000
"
Font
-
Bold
=
"
True
"
ForeColor
=
"
White
"
/>
<
RowStyle BackColor
=
"
#FFFBD6
"
ForeColor
=
"
#333333
"
/>
<
SelectedRowStyle BackColor
=
"
#FFCC66
"
Font
-
Bold
=
"
True
"
ForeColor
=
"
Navy
"
/>
<
PagerStyle BackColor
=
"
#FFCC66
"
ForeColor
=
"
#333333
"
HorizontalAlign
=
"
Center
"
/>
<
HeaderStyle BackColor
=
"
#990000
"
Font
-
Bold
=
"
True
"
ForeColor
=
"
Red
"
/>
<
AlternatingRowStyle BackColor
=
"
White
"
/>
</
asp:GridView
>
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
--------------------------------------------------------------
protected
void
GridView1_RowDeleting(
object
sender, GridViewDeleteEventArgs e)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
string sqlstr2 = "delete from Users where u_id='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
SqlConnection con = new SqlConnection(str);
SqlCommand cmd = new SqlCommand(sqlstr2,con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
Databinds();
}
//
更新的功能
protected
void
GridView1_RowUpdating(
object
sender, GridViewUpdateEventArgs e)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
SqlConnection con = new SqlConnection(str);
string sqlstr = "update Users set u_name='"
+ ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim() + "',u_age='"
+ ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim() + "',u_sex='"
+ ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim() + "',u_phone='"
+ ((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString().Trim() + "',u_email='"
+ ((TextBox)(GridView1.Rows[e.RowIndex].Cells[5].Controls[0])).Text.ToString().Trim() + "',u_address='"
+ ((TextBox)(GridView1.Rows[e.RowIndex].Cells[6].Controls[0])).Text.ToString().Trim() + "'where u_id='"
+GridView1.DataKeys[e.RowIndex].Value.ToString()+"'";
SqlCommand cmd = new SqlCommand(sqlstr,con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
GridView1.EditIndex = -1;
Databinds();
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
}
//
编辑的功能
protected
void
GridView1_RowEditing(
object
sender, GridViewEditEventArgs e)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
GridView1.EditIndex = e.NewEditIndex;
Databinds();
}
//
退出编辑
protected
void
GridView1_RowCancelingEdit(
object
sender, GridViewCancelEditEventArgs e)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
GridView1.EditIndex = -1;
Databinds();
}
这里是在母版页里做验证时要用到的. 必须写在INIT事件中.,因为母版页的Load在子页之后
protected override void OnInit(EventArgs e)
{
//--添加验证代码段..
base.OnInit (e);
}
母版页中直接写就OK了.
GRID中再次寻找指定的控件.现在第一次看到有在TABLE中可以用GETELEMENTBYID之类
的用法.
使用JS遍历GridView里的TextBox,并判断.提交前调用JS方法
这个方法得好好想想, 在一个TABLE中再寻找另外一个东东
<
script type
=
"
text/javascript
"
>
function
onClientClick()
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
var inputs = document.getElementById("<%=GridView1.ClientID%>").getElementsByTagName("input");
for(var i=0; i <inputs.length; i++)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
if(inputs[i].type=="text")
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
inputs[i].value ... //这是TextBox的Text值,根据你的情况进行验证
//....
}
}
}
</
script
>
这里写一个可以发送附件的邮件类.
string
SendTos
=
SendTo.Text.Trim();
//
发送人
string
CcTos
=
CcTo.Text.Trim();
//
抄送人
string
[] Receiver
=
System.Text.RegularExpressions.Regex.Split(SendTos
+
CcTos,
"
,
"
);
//
总收件人
string
FromMail
=
"
ustbwuyi1@163.com
"
;
//
发件人
string
Title
=
"
你好
"
;
//
邮件主题
string
Body
=
"
附件里重要文档,请查收!
"
;
//
邮件主体
string
ShowName
=
"
ustbwuyi
"
;
//
显示名字
if
(SendTos
!=
""
||
CcTos
!=
""
)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
//用户名(取发送邮箱的@前面的部分,即ustbwuyi1
string MailUserName=FromMail.Substring(0,FromMail.IndexOf("@"));
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//密码
string MailPassword="ustbwuyi";
System.Web.Mail.MailMessage mailmessage=new MailMessage();
mailmessage.From=FromMail;
mailmessage.Subject=Title;
mailmessage.Body=Body;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//添加附件
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
ArrayList FileNames;
//如果存在附件
if(FileNames.Count>=1)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
//添加附件
string Filename;
for(int k=0;k<FileNames.Count;k++)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
Filename=FileNames[k].ToString();
mailmessage.Attachments.Add(new MailAttachment(Filename));
}
}
}
mailmessage.Fields.Add(
"
http://schemas.microsoft.com/cdo/configuration/smtpauthenticate
"
,
1
);
mailmessage.Fields.Add(
"
http://schemas.microsoft.com/cdo/configuration/sendusername
"
,MailUserName);
mailmessage.Fields.Add(
"
http://schemas.microsoft.com/cdo/configuration/sendpassword
"
,MailPassword);
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
向收件人和抄送人循环发送
for
(
int
j
=
0
;j
<
Receiver.Length;j
++
)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
mailmessage.To=Receiver[j].ToString();
System.Web.Mail.SmtpMail.SmtpServer="smtp.163.com";
try
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
System.Web.Mail.SmtpMail.Send(mailmessage);
}
catch(Exception ex)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
Response.Write("<script language='javascript'>alert('邮件发送失败,请您和ustbwuyi联系(QQ:108556024)!')</script>");
}
}
}
string
filename
=
this
.file1.PostedFile.FileName;
//
定义正则表达式
Regex reg
=
new
Regex(
@"
^.+.(jpg)|(gif)|(swf)|(jpeg)$
"
);
//
用正则表达式来判定
if
(
!
reg.Match(filename.ToLower()).Success)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{ base.Alert("上传的文件类型不符合要求!"); }
//
获取上传文件的名称
string
name
=
DateTime.Now.ToString(
"
yyyyMMddhhmmss
"
)
+
filename.Substring(filename.LastIndexOf(
"
/
"
)
+
1
);
//
要上传的服务器地址
string
path
=
Server.MapPath(
string
.Format(
"
~/AdFiles/
"
))
+
name;
try
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{ this.file1.PostedFile.SaveAs(path);
}
catch
(Exception ee)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{ base.Alert("图片上传失败,请与服务器空间商联系确认权限!");
}
其次是上传权限的设置,如果是在本地,需要对虚拟目录下该文件夹设置写入权限,在该目录上鼠标右键->属性->安全->everyone->写入即可。
如果是在服务器,除了需要有该文件夹的写入权限之外,还要在web.config里面设置一下。
在system.web节点里面添加如下代码:
<identity impersonate="true" userName="UserName" password="PassWord" />
发一些JS代码中的EVENT的属性和事件.以做个总结吧.
Event对象
1 Event对象的主要属性和方法
event代表事件的状态,专门负责对事件的处理,它的属性和方法能帮助我们完成很多和用户交互的操作,下面我们就来看看它的一些属性和方法。
type:事件的类型,就是HTML标签属性中,没有“on”前缀之后的字符串,例如“Click”就代表单击事件。
srcElement:事件源,就是发生事件的元素。比如<a οnclick="check()"></a> a这个链接是事件发生的源头,也就是该事件的srcElement。
button:声明了被按下的鼠标键,是一个整数。0代表没有按键,1代表鼠标左键,2代表鼠标右键,4代表鼠标的中间键,如果按下了多个鼠标键,就把这些值加在一起,所以3就代表左右键同时按下。
clientX/clientY:是指事件发生的时候,鼠标的横、纵坐标,返回的是整数,它们的值是相对于包容窗口的左上角生成的。
offsetX/offsetY:鼠标指针相对于源元素的位置,可以确定单击Image对象的哪个象素。
altKey,ctrlKey,shiftKey:顾名思义,这些属性是指鼠标事件发生的时候,是否同时按住了Alt、Ctrl或者Shift键,返回的是一个布尔值。
keyCode:返回keydown和keyup事件发生的时候,按键的代码以及keypress事件的Unicode字符。比如event.keyCode=13代表按下了回车键;
fromElement、toElement前者是指代mouseover事件移动过的文档元素,后者指代mouseout事件中鼠标移动到的文档元素。
cancelBubble:一个布尔属性,把它设置为true的时候,将停止事件进一步起泡到包容层次的元素,它用于检测是否接受上层元素的事件的控制。true代表不被上层元素的事件控制,false代表允许被上层元素的事件控制。
returnValue:一个布尔值属性,设置为false的时候可以阻止浏览器执行默认的事件动作,相当于<a href=”#” οnclick=”ProcessMethod();return false;” />。
attachEvent()和detachEvent()方法:为制定DOM对象事件类型注册多个事件处理函数的方法,它们有两个参数,第一个是事件类型,第二个是事件处理函数。在attachEvent()事件执行的时候,this关键字指向的是window对象,而不是发生事件的那个元素。
C#中一些转换的含数.
变量.ToString()
字符型转换 转为字符串
12345.ToString("n"); //生成 12,345.00
12345.ToString("C"); //生成 ¥12,345.00
System.Text.Encoding.Default.GetBytes(变量)
字码转换 转为比特码
如:byte[] bytStr = System.Text.Encoding.Default.GetBytes(str);
然后可得到比特长度:
len = bytStr.Length;
这个主要是可以用来区分汉字还是英文用的。