ASP.net FAQs --转CSDN社区

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();  
         }  
  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shipfi

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值