1.如何判断一个查询的结果是否为空
DataSet也好,DataReader也好,怎么在执行一个select查询后,判断结果集是否为空?比如要看看数据库中有没有用户提交的资料?
SqlDataReader dr=...
if(dr.Read())//有数据
DataTable dt=...
if(dt.Rows.Count>0)//有数据
SqlCommand cmd;
int i = cmd.Fill["youtable"];
if(i==0)
//没记录
else
//有记录
2.DataGrid中连接到下一页显示数据
我用一个datagrid显示数据库中的一张表,但只显示其中一个字段khmc(不是主键),我想实现通过点击该字段,然后根据该表的主键在下一页显示不同的数据。如下:
khmc
2001年度考核 点击之后根据该条记录的主键id值进入下一页并显示
2002年度考核
在DataGrid里面加入一个按钮列(LinkButton),然后把CommandArgument绑定为数据库的ID值,在DataGrid的ItemCommand中检测LinkButton的CommandName,然后根据CommandArgument来重新绑定DataGrid
还有一个方法是加入一个超连接列,把DataNavigateUrlField设置为ID字段,把DataNavigateUrlFormatString属性设置为"detail.aspx?id={0}",然后在detail.aspx中根据URL中的参数来显示数据。
你还可以考虑使用Multipage+Tabstrip控件
再一个PageView中显示DataGrid,另一个PageView中显示数据
这样还可以方便浏览,在一个页面的两个PageView中切换查看数据而不用刷新
DATAGRID里有一个属性,叫DataKeyField,给这个属性赋值"ID",当点击后取DATAGRID1.DataKeys[datagrid1.SelectIndex]就可以取出来“ID”字段了
---------------------------------------------------------------
在show()函数中:
string ID = Request.QueryString["ID"];
...
SqlDataAdapter myAdap1 = new SqlDataAdapter("select * from Hr_Jx_Khmc where id='" + ID + "'", myConnection);
---------------------------------------------------------------
还有,去掉<asp:HyperLinkColumn>中的NavigateUrl属性。
---------------------------------------------------------------
把DataNavigateUrlField设置为ID字段,把DataNavigateUrlFormatString属性设置为"detail.aspx?id={0}",然后在detail.aspx中根据URL中的参数来显示数据。
3.在没有提示下关闭窗口
我的问题是打开一个窗口后,使用window.close()关闭当前窗口时,会弹出一对话框确定是是否关闭当前窗口,如何不让这个对话框出现?或者在打开一个浏览器窗口时是否可以用程序定制窗口风格?以上窗口指得是非window.open()打开的。
---------------------------------------------------------------
javascript:window.opener=null;window.close();
4.Response.Redirect()和Server.Transfer()的区别
Response.Redirect()和Server.Transfer()有什么区别呢?
如果做一个页面转换按钮用什么方法较好?
---------------------------------------------------------------
>>区别?
Response.Redirect is a round-trip redirection
server->browser->server->browser (display a new URL in the address bar)
Server.Transfer is a server-side redirection
server->server->browser (display the old URL in the address bar)
>>用什么方法较好?
depending on what you are doing, normally, you should use Response.Redirect
5.使"取消"按钮不执行验证
我在添加信息页面中设置了“添加”和“取消”按钮,并对输入文本框内的数据进行了非空和数据长度的验证,用的是Requiredfieldvalidator控件和rangevalidator控件,当我按添加按钮时验证是没错的。但是我按“取消”时,程序也执行了验证,也就是说我输入的数据是空或者过长的话,我不能返回!!!显然这是和我原来的意思不符合的。按照书上和文档里说的,在“取消”的激发事件里加了下面的语句后,问题依旧,程序不通过验证就根本不执行“取消”的激发事件!!怎么办???!!!
If page.IsValid Then
…………………………
Else
………………………………
End If
---------------------------------------------------------------
把取消按钮的CauseValidation设置为False
---------------------------------------------------------------
如果单单是为了检验非空和数据长度,建议你不要用验证控件。
本身<asp:TextBox>就可以限制长度了。MaxLength属性。
然后再在cs文件里面检验非空。
if(TextBox1.Text.Trim().Length == 0)
{
//为空,作处理
return;
}
---------------------------------------------------------------
还是用客户端脚本吧
这种与服务器无关的验证最好写脚本
---------------------------------------------------------------
后台编程
---------------------------------------------------------------
“取消“按钮这样定义:
<input type="reset" id="Reset" value="取消" name="Reset" runat="server">
就是用html控件,加上runat="server"
---------------------------------------------------------------
直接使用普通的html格式就可以了,必须加上runat="server".用RequiredFieldValidator contorl有什么不好?如果判断TextBox_ID.Text.Trim().Length==0同样需要在服务器端验证...
当然客户端验证也可,不过客户端验证安全性不如服务器端,资源方面当然占用少一点,但不至于影响性能
6.怎样在webform下自动创建sqlsever数据库,表,存储过程?
调用批处理命令吗?
---------------------------------------------------------------
如果没用特殊要求直接使用SqlCommand.ExecuteNonQuery()执行SQL语句就行。
---------------------------------------------------------------
有个最简单的办法:在程序里运行一个存储过程,该存储过程是执行RESTORE DATABASE 数据库的。
---------------------------------------------------------------
alter procedure dbo.addp @id int output,@name nvarchar(40),@supplierid int,@Categorid int as insert into Proudcts(productname,supplierid,categoryid)
values(@name,@supplierid@Categorid)
select@id=SOPE_INDENTITY()*/also=(select max(id)or count(*)from products))
==========Main()
SqlConnection conn=new SqlConnection("server=localhost";database=Northwind;uid=sa;pwd=");
SqlCommand comm=conn.CreatCommand();
comm.CommandText="AddP@Id OUTPUT,@name,@supplierid,@Categoryid";
comm.Parameters.Add("@id",SqlDbType.Int);
comm.Parameters["@id"].Direction=ParameterDiection.Output;
comm.Parameters.Add("@Name",SqlDbType.NVarChar,40).Value="Widget";
comm.Parameters.Add("@SupplierID",SqlDbType.Int).Value=1;
comm.Parameters.Add("@Categoryid",SqlDbType.Int).Value=1;
comm.ExecuteNonQuery();
Response.Write("New Prodcutid")="+comm.Parameters["@id"].Value);
conn.close();
---------------------------------------------------------------
7.多个页面定向到同一个页面,如何返回上一页?
用客户端脚本:
history.go(-1);
如果在服务器端写,那么:
Response.Write( "<script> history.go(-2); </script>" );
8.textbox里怎么控制只输入数字!?
textbox里怎么控制只输入数字!?
textbox里怎么控制只输入整数!?
在keypress事件中怎么e.KeyChar怎么转成ascii码??
如何判断一个字符串是否是数字?(在vb里我是用isnumeric,C#里有没有??)
---------------------------------------------------------------
char.isdigt()
---------------------------------------------------------------
用RegularExpressionValidator控件
设定正则为
"^/d*$" -- 数字
"^[0-9]*$" -- 整数
建议用keyDown事件,e.KeyCode可以直接和Keys枚举中的值比较
判断是否为数字
可以用正则写
using System.Text.RegularExpressions;
string ex = "^/d*$";
Regex reg = new Regex( ex );
bool flag = reg.IsMatch( 要检查的字符串 );
---------------------------------------------------------------
<form runat=server>
<asp:TextBox runat=server id="num" AotuPostBack=true/>
<asp:RegularExpressionValidator runat=server Display="dynamic"
ControlToValidate="num"
ValidationExpression="/d*"
ErrorMessage=""
>*
</asp:RegularExpressionValidator>
</form>
---------------------------------------------------------------
可以用正则表達式﹐也可用int.parse()判定就可以了﹐是就讓它寫﹐不是就selectAll()不就OK﹗
---------------------------------------------------------------
1. GetASCII (Strings)
public string GetASCII()
{
char low = (char)33;
char high = (char)255;
StringBuilder sb = new StringBuilder();
for (char ch=low; ch<=high; ch++)
{
sb.Append( ch.ToString() + " " );
}
return sb.ToString();
}
DataSet也好,DataReader也好,怎么在执行一个select查询后,判断结果集是否为空?比如要看看数据库中有没有用户提交的资料?
SqlDataReader dr=...
if(dr.Read())//有数据
DataTable dt=...
if(dt.Rows.Count>0)//有数据
SqlCommand cmd;
int i = cmd.Fill["youtable"];
if(i==0)
//没记录
else
//有记录
2.DataGrid中连接到下一页显示数据
我用一个datagrid显示数据库中的一张表,但只显示其中一个字段khmc(不是主键),我想实现通过点击该字段,然后根据该表的主键在下一页显示不同的数据。如下:
khmc
2001年度考核 点击之后根据该条记录的主键id值进入下一页并显示
2002年度考核
在DataGrid里面加入一个按钮列(LinkButton),然后把CommandArgument绑定为数据库的ID值,在DataGrid的ItemCommand中检测LinkButton的CommandName,然后根据CommandArgument来重新绑定DataGrid
还有一个方法是加入一个超连接列,把DataNavigateUrlField设置为ID字段,把DataNavigateUrlFormatString属性设置为"detail.aspx?id={0}",然后在detail.aspx中根据URL中的参数来显示数据。
你还可以考虑使用Multipage+Tabstrip控件
再一个PageView中显示DataGrid,另一个PageView中显示数据
这样还可以方便浏览,在一个页面的两个PageView中切换查看数据而不用刷新
DATAGRID里有一个属性,叫DataKeyField,给这个属性赋值"ID",当点击后取DATAGRID1.DataKeys[datagrid1.SelectIndex]就可以取出来“ID”字段了
---------------------------------------------------------------
在show()函数中:
string ID = Request.QueryString["ID"];
...
SqlDataAdapter myAdap1 = new SqlDataAdapter("select * from Hr_Jx_Khmc where id='" + ID + "'", myConnection);
---------------------------------------------------------------
还有,去掉<asp:HyperLinkColumn>中的NavigateUrl属性。
---------------------------------------------------------------
把DataNavigateUrlField设置为ID字段,把DataNavigateUrlFormatString属性设置为"detail.aspx?id={0}",然后在detail.aspx中根据URL中的参数来显示数据。
3.在没有提示下关闭窗口
我的问题是打开一个窗口后,使用window.close()关闭当前窗口时,会弹出一对话框确定是是否关闭当前窗口,如何不让这个对话框出现?或者在打开一个浏览器窗口时是否可以用程序定制窗口风格?以上窗口指得是非window.open()打开的。
---------------------------------------------------------------
javascript:window.opener=null;window.close();
4.Response.Redirect()和Server.Transfer()的区别
Response.Redirect()和Server.Transfer()有什么区别呢?
如果做一个页面转换按钮用什么方法较好?
---------------------------------------------------------------
>>区别?
Response.Redirect is a round-trip redirection
server->browser->server->browser (display a new URL in the address bar)
Server.Transfer is a server-side redirection
server->server->browser (display the old URL in the address bar)
>>用什么方法较好?
depending on what you are doing, normally, you should use Response.Redirect
5.使"取消"按钮不执行验证
我在添加信息页面中设置了“添加”和“取消”按钮,并对输入文本框内的数据进行了非空和数据长度的验证,用的是Requiredfieldvalidator控件和rangevalidator控件,当我按添加按钮时验证是没错的。但是我按“取消”时,程序也执行了验证,也就是说我输入的数据是空或者过长的话,我不能返回!!!显然这是和我原来的意思不符合的。按照书上和文档里说的,在“取消”的激发事件里加了下面的语句后,问题依旧,程序不通过验证就根本不执行“取消”的激发事件!!怎么办???!!!
If page.IsValid Then
…………………………
Else
………………………………
End If
---------------------------------------------------------------
把取消按钮的CauseValidation设置为False
---------------------------------------------------------------
如果单单是为了检验非空和数据长度,建议你不要用验证控件。
本身<asp:TextBox>就可以限制长度了。MaxLength属性。
然后再在cs文件里面检验非空。
if(TextBox1.Text.Trim().Length == 0)
{
//为空,作处理
return;
}
---------------------------------------------------------------
还是用客户端脚本吧
这种与服务器无关的验证最好写脚本
---------------------------------------------------------------
后台编程
---------------------------------------------------------------
“取消“按钮这样定义:
<input type="reset" id="Reset" value="取消" name="Reset" runat="server">
就是用html控件,加上runat="server"
---------------------------------------------------------------
直接使用普通的html格式就可以了,必须加上runat="server".用RequiredFieldValidator contorl有什么不好?如果判断TextBox_ID.Text.Trim().Length==0同样需要在服务器端验证...
当然客户端验证也可,不过客户端验证安全性不如服务器端,资源方面当然占用少一点,但不至于影响性能
6.怎样在webform下自动创建sqlsever数据库,表,存储过程?
调用批处理命令吗?
---------------------------------------------------------------
如果没用特殊要求直接使用SqlCommand.ExecuteNonQuery()执行SQL语句就行。
---------------------------------------------------------------
有个最简单的办法:在程序里运行一个存储过程,该存储过程是执行RESTORE DATABASE 数据库的。
---------------------------------------------------------------
alter procedure dbo.addp @id int output,@name nvarchar(40),@supplierid int,@Categorid int as insert into Proudcts(productname,supplierid,categoryid)
values(@name,@supplierid@Categorid)
select@id=SOPE_INDENTITY()*/also=(select max(id)or count(*)from products))
==========Main()
SqlConnection conn=new SqlConnection("server=localhost";database=Northwind;uid=sa;pwd=");
SqlCommand comm=conn.CreatCommand();
comm.CommandText="AddP@Id OUTPUT,@name,@supplierid,@Categoryid";
comm.Parameters.Add("@id",SqlDbType.Int);
comm.Parameters["@id"].Direction=ParameterDiection.Output;
comm.Parameters.Add("@Name",SqlDbType.NVarChar,40).Value="Widget";
comm.Parameters.Add("@SupplierID",SqlDbType.Int).Value=1;
comm.Parameters.Add("@Categoryid",SqlDbType.Int).Value=1;
comm.ExecuteNonQuery();
Response.Write("New Prodcutid")="+comm.Parameters["@id"].Value);
conn.close();
---------------------------------------------------------------
7.多个页面定向到同一个页面,如何返回上一页?
用客户端脚本:
history.go(-1);
如果在服务器端写,那么:
Response.Write( "<script> history.go(-2); </script>" );
8.textbox里怎么控制只输入数字!?
textbox里怎么控制只输入数字!?
textbox里怎么控制只输入整数!?
在keypress事件中怎么e.KeyChar怎么转成ascii码??
如何判断一个字符串是否是数字?(在vb里我是用isnumeric,C#里有没有??)
---------------------------------------------------------------
char.isdigt()
---------------------------------------------------------------
用RegularExpressionValidator控件
设定正则为
"^/d*$" -- 数字
"^[0-9]*$" -- 整数
建议用keyDown事件,e.KeyCode可以直接和Keys枚举中的值比较
判断是否为数字
可以用正则写
using System.Text.RegularExpressions;
string ex = "^/d*$";
Regex reg = new Regex( ex );
bool flag = reg.IsMatch( 要检查的字符串 );
---------------------------------------------------------------
<form runat=server>
<asp:TextBox runat=server id="num" AotuPostBack=true/>
<asp:RegularExpressionValidator runat=server Display="dynamic"
ControlToValidate="num"
ValidationExpression="/d*"
ErrorMessage=""
>*
</asp:RegularExpressionValidator>
</form>
---------------------------------------------------------------
可以用正则表達式﹐也可用int.parse()判定就可以了﹐是就讓它寫﹐不是就selectAll()不就OK﹗
---------------------------------------------------------------
1. GetASCII (Strings)
public string GetASCII()
{
char low = (char)33;
char high = (char)255;
StringBuilder sb = new StringBuilder();
for (char ch=low; ch<=high; ch++)
{
sb.Append( ch.ToString() + " " );
}
return sb.ToString();
}