`

小知识(五)

阅读更多

1.在需要弹出提示框时如果页面中使用updatepanel时仍要页面的背景不变白可用以下语句

Page.ClientScript.RegisterStartupScript(Page.GetType(),"123","<script language='javascript' defer>alert('提示信息');</script>");

使用updatepanel时如果使用Response.Write("<script language='javascript' defer>alert('提示信息')</script>"); 则不会有任何效果  Response.Write()语句能阻止回调的进行貌似

可以使用以下两种的任何一种语句

ScriptManager.RegisterStartupScript(UpdatePanel1,GetType(),"123","alert('提示信息');",true);

ScriptManager..RegisterClientScriptBlock(UpdatePanel1,GetType(),"123","alert('提示信息');",true);

http://topic.csdn.net/u/20110326/22/443ef280-f0d1-4adb-8c7a-68aa0ad71f57.html

其中alert()前后不需要加<script></script>,因为后面的参数是true

http://www.cnblogs.com/lvcao20/archive/2008/08/01/1258075.html

 

2.AJAX与Webservice的异同

http://www.cnblogs.com/zhengfeng/archive/2006/09/24/513602.html

ASP.NET中利用jQuery实现AJAX同域操作时后台代码可以写在ashx文件里

http://kendezhu.iteye.com/blog/987710

ASP.NET中利用jQuery实现AJAX跨域操作

http://kendezhu.iteye.com/blog/1004370

ASP.NET中利用javascript访问同域的Webservice时后台代码可以写在asmx文件里

http://kendezhu.iteye.com/blog/752240 注意需要在ScriptManager控件中添加对该Web Service的引用(即向其注册该web服务)

ASP.NET中访问跨域的Webservice

http://www.cnblogs.com/hanmeimei/archive/2011/01/17/WebServiceWeather.html

ASP.NET中利用AJAX扩展控件访问同域的Webservice

http://kendezhu.iteye.com/blog/773496  这种一般仅仅需要设置一下控件的属性就可以了,如ServicePath属性,相当于对web service的引用, 有些也需要写一些客户端js代码, 如链接中的自动补全的应用

总的来说,在ASP.NET中WebService的使用比AJAX要容易实现。

 

3.web开发的三种超时

前一段时间使用做的一个项目使用LINQ操作数据库,总是在第一次操作数据库时出现超时的现象(当时不知道是查询数据库超时还是连接数据库超时),后来在经过尝试以后才知道是连接数据库超时,经过修改了连接字符串的Connect Timeout属性之后问题得到了解决,下面我们来了解一下在web开发时遇到的三种超时:

查询数据库超时(执行sql语句超时,默认是30s) http://endless.im/archives/asp-net-webservice-timeout.html该连接给出的第四种超时应该是属于查询数据库超时而不是连接数据库超时,不过其解决方案是对的,另外在使用LINQ时修改查询数据库超时时间是通过上下文实例的CommandTimeout属性db.CommandTimeout=60;

http://stackoverflow.com/questions/5219534/difference-between-command-timeout-and-connection-time-out

连接数据库超时(默认15s) 这种超时时限不能在程序里修改,程序只提供了与该超时时限相关的只读属性,如在LINQ里是db.Connection.ConnectionTimeout

http://www.cnblogs.com/qingyuan/archive/2010/05/01/1725557.html ALINQ据说是山寨版LINQ,但却比LINQ强大

可以在连接字符串里修改:Data Source=.\*;AttachDbFilename=*;Connect Timeout=100;Integrated Security=True;User Instance=True

连接服务器超时  在配置文件里修改<httpRuntime maxRequestLength="102400" executionTimeout="720" />

下面连接将数据库连接时间与执行sql语句时间及请求服务器时间混为一谈了

http://www.360doc.com/content/09/1116/11/342503_9133874.shtml

 

4.关于GridView1.Columns.Count为0的原因及解决方案

http://topic.csdn.net/u/20110424/16/40115bba-6bef-4e98-af9c-eb0518b09474.html

 

5.有时visiable="flase"或许不起作用,不如改用style="display:none"试试

http://kendezhu.iteye.com/blog/737526虽然<%= %>不能绑定到控件的属性, 但可以绑定到客户端控件的属性,如<input value="<%= %>" />

 

6.多维数组与交错数组

   多维数组  int[,,] ints=new int[2,3,4]; ints={{{1,1,1,1},{1,1,1,1},{1,1,1,1}},{{1,1,1,1},{1,1,1,1},{1,1,1,1}}}  或直接  int[,,] ints={{{1,1,1,1},{1,1,1,1},{1,1,1,1}},{{1,1,1,1},{1,1,1,1},{1,1,1,1}}}

以上是一个3维数组,分析的时候可以从左往右一维一维降,即该3维数组包含2个2维数组,而这2个2维数组包含3个1维数组,每个1维数组里有4个元素。

值得一提的是多维数组每个1维数组里的元素个数必须相同,本例为4个。

 

 int[, ,] ints = { { { 1, 3, 5, 8 }, { 4, 6, 9, 11 }, { 5, 7, 12, 6 } }, { { 23, 2, 4, 6 }, { 3, 6, 6, 4 }, { 7, 6, 3, 5 } } };

TextBox1.Text = ints[1, 1, 2].ToString();  //6  第2个2维数组里的第2个1维数组里的第3个元素

 

 foreach (var item in ints)

{

   TextBox2.Text += item.ToString(); //135846911571262324636647635

}

 TextBox3.Text = ints.Length.ToString();  //24

多维数组里的元素在某种程度上可以看成是在一个一维数组里,因为一个foreach语句可以将它们都遍历完,然后Length获得的是所有元素的个数。

  交错数组    int[][] intabc=new int[2][];

                  intabc[0]={1,2,3};

                  intabc[1]={4,5};

                  intabc[2]={7};

                  或者 

                  int[] a={1,2,3};

                  int[] b={4,5};

                  int[][] intabc = { a, b,new int[]{7} };

以上就是一个交错数组,可以看出它每一维数组里的元素个数可以不一样,其实交错数组可以看成是元素是一维数组的数组(貌似元素不可以是多维数组,如int[,][] intabc=...会编译出错)

            TextBox2.Text=intabc[2][0].ToString();  //7

            foreach (var items in intabc)

            {

                foreach (var item in items)

                {

                    TextBox1.Text += item.ToString(); //123457

                }

            }

            TextBox2.Text = intabc.Length.ToString(); //3

交错数组里的元素就不可以看成是在一个一维数组里了,因为需要两个foreach语句层层遍历,然后Length获得的只是该交错数组里有几个一维数组,而不是所有元素的个数。

 

7.关于html元素的百分比高度设置

 

html标签中,子容器的高宽值采取百分比,需要看父容器是否定义了高宽值(其父容器也可以设置为百分

比,层层往上总有一个父容器要有高度,当然这个父容器最后可能为body,是浏览器自动获得的)。然而

有些容器默认占父容器的高度的100%,如将td就默认占整个table高度的100%,其他元素要自己设置。

http://topic.csdn.net/u/20070114/15/442ab16a-cc35-4f7c-a970-8e5ed7063e41.html   8楼

http://topic.csdn.net/u/20090306/14/cfaaa77c-285a-4a8e-aaa7-79973a4fa6c7.html   19楼 

 

8.sql多条件查询

http://wenda.tianya.cn/wenda/thread?tid=726934318e41cfed

 

9.扩展方法

http://www.cnblogs.com/janes/archive/2011/08/05/2128429.html

随便建一个静态类,里面含有静态方法(第一个前面有this的参数就是要扩展的类)

 public static class ExtendMethod

    {

        public static string Plus(this string str) 为string添加扩展方法Plus

        {

            string str2 = null;

            foreach (var item in str)

            {

                str2 += item.ToString() + "+";

            }

            str2 = str2.Substring(0, str2.LastIndexOf('+'));

            return str2;

        }

        public static string GetName(this People pe) 为自定义类People添加扩展方法GetName

        {

            return "Iamapeople";

        }

    }

自定义People类

public class People

{

 

}

然后就可以为string对象调用该扩展方法了,这里是在与ExtendMethod类同一命名空间的aspx里调用的(事实上ExtendMethod类和People类位于App_Code里面)

  protected void Button1_Click(object sender, EventArgs e)

    {

        string str = "abcdefgh";

        People p = new People();

        Label1.Text = str.Plus()+p.GetName();

    }

结果:a+b+c+d+e+f+g+hIamapeople

如果不在一个命名空间里,注意using命名空间就可以了

 

但如果用于扩展的静态类(如此处的ExtendMethod类)位于其他程序集里,那么貌似你就不能为自定义类添加扩展方法,因为在静态方法里this后面添加该类型的时候不能被有效识别。(sorry,是可以的,只要引入了该程序集就可以。所以可以想象System.Linq这个程序集(里面为一些集合类扩展了许多方法)里一定引入了其他一些集合类如List<T>所在的程序集)如果只能在同一个程序集里的话,那加这些扩展方法有什么意义呢?

从这里也可以看出,因为我扩展的string类明显跟我的这个扩展方法不在同一个程序集里。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics