1, 模态对话框中下载文件时死了
解决方案:页面中加下面代码(模态对话框禁用了很多功能)
<base target="download" />
<iframe id="download" name="download" height="0px" width="0px"></iframe>
2,updatePanel后台更新数据,但是后台在这段处理之后,前台js中需要根据这段处理重新计算一些数值(比如后台创建了很多行,前台根据返回行号需要在动态增加一行时生成控件的下标)
解决方法: </asp:UpdatePanel>后紧跟一段js
<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(your_event);//注册你的事件
</script>
3,取服务端控件客户端验证+ 纯html验证(自己写的)
方法;
<script type="text/javascript">
function WebForm_OnSubmit() {
//validateHtmlControl()是自己写的验证
if (typeof (ValidatorOnSubmit) == "function") {
if (ValidatorOnSubmit() == false || validateHtmlControl() == false) {
return false;
}
return true;
}
}
</script>
后来遇到一个Approved不验证的问题,后来发现应该是ValidatorOnSubmit()的问题(问题函数,瓦擦擦),应该用Page_ClientValidate("验证group"),但是Page_ClientValidate在异步回发时就会验证,所以加一个event判断(在WebForm_OnSubmit中不是submit的取不到event,为null)
后来这个方法重写为
function WebForm_OnSubmit() {
if (typeof (ValidatorOnSubmit) == "function") {
var vTag = 0;
// if (ValidatorOnSubmit() == true) { //这个方法有问题
// vTag++;
// }
if (event != null) {
if (event.srcElement.causesValidation == "True" || event.srcElement.getAttribute("causesValidation") == "True") {
if (typeof (Page_ClientValidate) == "function") {
if (Page_ClientValidate("ValidateSubmit") == true) {
vTag++;
}
}
if (validateHtmlControl() == true) {
vTag++;
}
if (vTag == 2) {
return true;
}
return false;
}
else {
return true;
}
}
else {
return true;
}
}
}
</script>
4, 数据绑定的尽可能一次性在数据源搞好,不要在itemdataBound中搞数据库查询
5,join (select * from T where a<>'')
>
join T on ... and T.a<>''
6, oleDB不能通过sheet名读取,因为混合列类型时,不为当列类型(excel会从前八行选择最多类型的)取不到值(为空)。
网上所谓的解决方案都是扯淡http://hi.baidu.com/%CD%F5%BD%F0%BB%A220080111/blog/item/1b4308126e91e3d5c3fd78b8.html
7, 一个蛋疼的问题:修改file控件的"浏览"二字,用以下方法会影响excel的上传
<%-- <input type="file" runat="server" id="FileUpload1" style="display:none" title="Browse" onpropertychange="txtFilePath.value=this.value;" />--%>
<%-- <input type="text" readonly="readonly" id="txtFilePath" style=" 220px;" />
<input type="button" id="btnTemp" onclick="document.getElementById('<%=FileUpload1.ClientID %>').click()" value="Browse" />--%>
<%-- <asp:Button ID="btnBrowse" runat="server" SkinID="NormalBtn" Text="Browse"
OnClientClick="tempButton()"/>--%>
8, UpdatePanel怎样和纯HTML动态生成融合,
将不需要回发的部分用另一个UPdatePanel包起来,设定
UpdateMode="Conditional",然后设定
<Triggers>
<asp:AsyncPostBackTrigger ControlID="__UPI"/>
</Triggers>
这样它就只受这一个控件的影响
9, .saveHistory{behavior:url(#default#savehistory);}
一个控件设置了这个class属性,页面刷新也保存值
10. 表被锁定后的解决方法
--查询被锁的id
select request_session_id as spid,OBJECT_NAME(resource_associated_entity_id) as tableName
from sys.dm_tran_locks
where resource_type='OBJECT'
--将上面查到的id赋值为下面的spid
declare @SPID INT
Set @SPID = 52
declare @sql varchar(1000)
set @sql='kill '+cast(@SPID as varchar)
exec(@sql)
11, 查看表的信息(字段类型、长度、是否主键、是否可空、说明)
declare @table_name as varchar(max)
set @table_name = 'SalesPortal_Report_PreContract'
select * From(
select sys.columns.column_id, sys.columns.name, sys.types.name as typeName, sys.columns.max_length, sys.columns.is_nullable,
(select count(*) from sys.identity_columns where sys.identity_columns.object_id = sys.columns.object_id and sys.columns.column_id = sys.identity_columns.column_id) as is_identity ,
(select value from sys.extended_properties where sys.extended_properties.major_id = sys.columns.object_id and sys.extended_properties.minor_id = sys.columns.column_id) as description
from sys.columns, sys.tables, sys.types where sys.columns.object_id = sys.tables.object_id and sys.columns.system_type_id=sys.types.system_type_id and sys.tables.name=@table_name --order by sys.columns.column_id
) a where a.typeName<>'sysname' order by column_id
12, 一个有趣的小东西:
服务器端的Lable,设置Text属性,与在"<></>"之间设置,在后者还可以加<font color="red"><b>*</b></font>
13 updatepanel 中按钮下载文件出错 "由于出现错误 c00ce514 而导致此项操作无法完成"
方案:按钮变成postback的Trigger
原因:异步回发返回的resposeText值过大,估计不认了
14,sql优化
select
stuff((select ',' + CILAccount from Payroll_SecurityCode for xml path('')),1,1,'')
SELECT STUFF('abcdef', 2, 3, 'ijklmn')
15
public static void SetValue_ddl(System.Web.UI.WebControls.DropDownList DDlist, object value)
{
if (value != null)
{
if (DDlist.Items.FindByValue(value.ToString()) != null)
{
DDlist.SelectedValue = value.ToString();
}
else
{
DDlist.SelectedIndex = -1;
}
}
else
{
DDlist.SelectedIndex = -1;
}
}