这是一些在Asp.net编程中琐碎杂项,但有时却很重要,这里我没有作具体的大量说明,主要作为自己日后的查找
1、如果判断访问数据库的数据不为空: 用DBNull.Value
当不为空时才计算天数
classObj.Days =(dr["StartDate"]!=DBNull.Value && dr["EndDate"]!=DBNull.Value)?(Convert.ToDateTime(dr.Field<DateTime?>("EndDate")) - Convert.ToDateTime(dr.Field<DateTime?>("StartDate"))).Days:0;//时长天数
或者: Convert.IsDBNull(dr["StartDate"])== false ? (Convert.ToDateTime(row["ExpiredBeginDate"])).ToString() : "";
可以用Convert.IsDBNull来判断是否在数据库中是空值
2、模板列中的判断
asp:TemplateField HeaderText="时长">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("StartDate").ToString() != "" && Eval("EndDate").ToString() != "" ?string.Format("{0}天",((Convert.ToDateTime(Eval("EndDate"))-Convert.ToDateTime(Eval("StartDate"))).Days+1).ToString()):"" %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
3、GridView控制日期格式
<asp:BoundField DataField="STARTDATE" HeaderText="理论开始时间" HtmlEncode=false DataFormatString="{0:yyyy-MM-dd}"></asp:BoundField>
取值时可以控制自己想要的格式
Convert.ToDateTime(dr["StartDate"]).ToString("yyyy-MM-dd")
4、GridView绑定数据时对绑定数据的判断与验证
<asp:TemplateField HeaderText="是否已取消">
<ItemTemplate>
<asp:Image ID="imgIsCancel" runat="server" ImageUrl='<%#Eval("ColName1").ToString()
=="1"?"~/images/icon/yes001.gif":"~/images/icon/no002.gif" %>' />
<asp:Label ID="Label1" runat="server" Text='<%# Bind("ColName1") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
5、DropDownList报不能选择多个项时处理
如有时设置选中项
ddlPayTypeID.Items.FindByValue(org.PayTypeid).Selected = true;
会报你不能选择多个项,你需要先把之前的选中项取消,即这样做
ddlPayTypeID.SelectedIndex = -1;
ddlPayTypeID.Items.FindByValue(org.PayTypeid).Selected = true;
就OK了。
6、转换数据库中的bool值
row["status"]在数据库中为为bool值,以ture 和 false存放
string status = Convert.toBoolean(row["status"])=="true"?"1":"0";
7、针对数据库设计时有些字段设计为bit类型的转换
在插入这样的数据时,true对应为1, false 对应为0
<asp:DropDownList ID="dropCategoryStatus" runat="server" Style="position: static" Width="73px">
<asp:ListItem Value="True">启用</asp:ListItem>
<asp:ListItem Value="false">禁用</asp:ListItem>
</asp:DropDownList>
bool status= Convert.toBoolean(dropCategoryStatus.SelectedValue);
这个status就可以直接插入到数据库中对应为bit类型的字段
冒似这样处理也可以 如:
select * from user where status=1 或者 select * from user where status='1' 或者 select * from user where status='True'
这样的结果都可以。打开数据 库是以True or False形式保存,查询是以1 or 0 出结果
8、一般的文本格式控制
如 this.lblIssueTime.Text += string.Format("yyyy-MM-dd", obj.CreatedDate);
9、解码URL
例如名字name是中文,可以用escape(name)传过去
function ReviewDetail(code,type,name)
{
var url = "PrePaymentDetail.aspx?vendorCode="+code+"&departmentType="+type+"&supplierName="+escape(name);
return UniversalOpenWindowAndBreak(640,600,url,0)
}
调用方法如下:(注意引号)
<a href="#" onclick="ReviewDetail('<%#Eval("VendorCode") %>','<%# Eval("Department") %>','<%#Eval("SupplierName") %>')">查看明细</a>
取值方式如下,直接取
lblSupplierName.Text = Request["supplierName"].ToString();
10、日期格式的值 赋给 文本框(TextBox)
DateTime dt = DateTime.Now;
txtDate.Text = string.Format("{0:yyyy-MM-dd}",dt);