今天给datalist里面的控件添加属性遇到问题。
用这种方法:
protected void DLAllowUsers_ItemDataBound(object sender, DataListItemEventArgs e)
{
LinkButton lbtn = (LinkButton)e.Item.FindControl("LbtnIsflags");
lbtn.Attributes.Add("onClick", "return confirm('是否确定删除!')");
}
却总有问题 搞郁闷了。
结果到处找 ,总算是找到了
protected void DLAllowUsers_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item)
{
LinkButton lbtn = (LinkButton)e.Item.FindControl("LbtnIsflags");
lbtn.Attributes.Add("onClick", "return confirm('是否确定删除!')");
}
}
原来和datalist的结构有关 如果datalist排版的时候是这样的
<Datalist>
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
</ItemTemplate>
<FooterTemplate>
</FooterTemplate>
</Datalist>
就必须像上面这样写
前两天做东西:需要把前台的文本编辑器里面的内容存到数据库然后取到后台做处理,问题是从文本编辑器存的数据都带有html标签(我们不能把这些标签给管理员看吧) 所以要处理一下。
首先我是直接的用datagrid绑定,绑定上去了html标签依然显示(很是奇怪以前也这么干过似乎是默认的就给换成的对应的格式了),看看直接绑定 <asp:BoundColumn DataField="cqcontent" HeaderText="内容"/> 里面没有找到html转码的属性(一句话直接的用<asp:BoundColumn/>无法解决 )。
想到用datalist可以在绑定字段的时候用HttpUtility.HtmlDecode()处理掉,但是无法达到其他的功能。
没法最后只得datagrid模板页里面放个lable控件然后动态的给其其赋值。
<asp:DataGrid id="dgContent" runat="server">
<Columns>
<asp:TemplateColumn HeaderText="内容">
<ItemTemplate>
<asp:Label ID="LabCqComment" runat="server" width="100%"></asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
直接在对应的cs文件中声明一个protectd 的string变量然后写到lable中间去 html标签没了,但每次绑定的都是以个值,看看数据库,值都是最后一行。看来还是没有动态的绑定上去。
那就继续改吧,我们需要找到每个lable然后把对应的值给绑定上去。这样我们就必须先找到这个lable控件,用this.DGQcomment.Items[i].FindControl("LabCqComment")找到了,可是它是个Control对象,没用我们习惯的Text属性(需要强制转换为lable)。
实现代码如下:
protected void DGQcomment_ItemDataBound(object sender, DataGridItemEventArgs e)
{
qcomment.Qid = Int32.Parse(Request.QueryString["QId"].ToString());
DataTable dt = QCommentCtr.Qcomment_GetQcommentByqid(qcomment);
if (dt != null && dt.Rows.Count != 0)
{
for (int i = 0; i < this.DGQcomment.Items.Count; i++)
{
((Label)this.DGQcomment.Items[i].FindControl ("LabCqComment")).Text=HttpUtility.HtmlDecode(dt.Rows[i]["cqcontent"].ToString());
}
}
}
我要的结果就出来了
做的网站在本机上传时没有问题,在上传到远程服务器上的时候就报错!
Access to the path : "C:\Inetpub\*******\4565483215.jpg" is denied
原因:ASP.net的用户,一般都是“IUSER_computerName”
解决方法:在Web.Config的<System.Web>里加<identity impersonate="true"/>节点
详细介绍:
http://www.microsoft.com/china/community/program/originalarticles/techdoc/impersonation.mspx
做网站的时候写了一个控件里面嵌套另一个用户控件的用户控件,原来测试的时候是没有问题的,都是正常显示的。后来引用的时候却出现这样的问题:
首次加载页面的时候,该控件的效果如下:

然后刷新此页面:

找了几天问题,看存储过程没问题,用户控件的逻辑也没问题,让我迷茫了几天。
今天又调试了一下突然发现 在页面带码里面多了一行,似乎是我以前写的时候没有这句话,终于意识到可能就是它的问题了。
<%@ OutputCache Duration="300" VaryByParam="*" %>
页面缓存:
Duration :
必需属性。页面应该被缓存的时间,以秒为单位。必须是正整数。
VaryByParam :
必需属性。Request 中变量的名称,这些变量名应该产生单独的缓存条目。"none" 表示没 有 变 动。"*" 可用于为每个不同的变量数组创建新的缓存条目。变量之间用 ";" 进行分隔。
删除这句话后 页面就正常了。
为什么我的电脑上的查询分析器能连到主机的数据库,可是应用程序上面就是连接不上去了(报错:异常详细信息: System.Data.SqlClient.SqlException: 超时时间已到。在操作完成之前超时时间已过或服务器未响应。)?
是不是server2000和vs2005安装时自带server2005在端口号上起冲突了? 还是不得而知.