自己在做项目的时候,遇到的三个小问题,如下:
1、删除数组中的重复项。
2、TextBox的disabled和readonly属性的差别。
3、如何在执行完一段javascript后,在实现跨页面的传送。
本文分析和解决了这三个问题。
一、消除数组中的重复项。
近期在做项目的时候,要求消除数组中的重复项,如过在没有LINQ前,这好像要写个函数还实现这个功能,但有了linq后,这个功能那是相当的简单的啊,如下面的代码:

Code

string[] stringArray =
{ "a", "b", "c", "a", "b", "e" };

Console.WriteLine(stringArray.Distinct().ToArray().Length);
foreach (string s in stringArray.Distinct().ToArray())
Console.Write(s);
Console.ReadLine();
程序执行的结果:4,abce。这样,消除数组中的重复项只需要Array.Distinct().ToArray()就可以实现。Linq这是个好东西啊。
二、Textbox的readonly属性和disabled属性
在项目中,需要经常用到这两个属性,区别如下:
1. readonly属性
代码:<input type="text" value="fisker" onclick="alert(this.value);" readonly />
输入框只读,不能编辑,同样表单可以获得值。
3,disabled
代码:<input type="text" value="fisker" onclick="alert(this.value);" disabled />
输入框灰色,不能编辑,以用JS改变或获得其值,但提交时并不提交该值。
三、跨页面的传送中的一个问题
跨页面的传送就是提交窗体(例如Page1.aspx),并把这个窗体和所有控件的值都传送给另一个页面(Page2.aspx)。实现这个功能就是在控件Button上添加属性PostbackUrl即可。
但是这里需要在点击Button时,首先执行一段javascript代码后,在实现跨页面的传送,直接用Button完不成这个功能,这时候就需要另一个控件LinkButton了,然后再将LinkButton伪装成Button。哈哈。如下面的代码:

Code
<asp:LinkButton ID="LinkButtonSentEmail" runat="server" OnClientClick="getEmailString();return true;"
PostBackUrl="~/EmailEdit.aspx" Width="70px">发送邮件</asp:LinkButton>
执行的javaxcript为:

Code
<script type="text/javascript" language="javascript">
function getEmailString()
{
var gHiddenFieldEmailAddress;
gHiddenFieldEmailAddress=$get("HiddenFieldEmailAddress");
gHiddenFieldEmailAddress.value="";
var elements=document.getElementsByTagName("input");
for (var i = 0; i < elements.length; i++) {
var e = elements[i];
if (e.type == "checkbox" && e.checked &&e.id!="checkAll")
if(e.value.trim()!="")
gHiddenFieldEmailAddress.value+=e.value+",";
}
}
</script>
但是,还有一个问题是,如何把LinkButton伪装成Button的形状,下面的CSS代码就能解决这个问题:

Code
<style type="text/css">
#LinkButtonSentEmail
{
padding: 3px;
border: 2px outset;
cursor: pointer;
background-color: #FFFFFF;
text-align: center;
height: 14px;
text-decoration: none;
color: #000000;
clear: both;
}
</style>
这样看起来就好像是Button出发的这个跨页面的传送了。
以上三个问题是我在做项目的时候遇到的小问题,把它们写下来,感觉不错。