个人在业余时间接了一个小网站,在做的过程中也遇到了一些问题,通过各种方式最终解决了,现在就把我在这个网站上遇到的积累的一些只是总结下。供以后学习参考。
1,网站做的过程中总是出现连接超时,最后找到原因了。是因为我每次打开连接了没有关闭。最后把连接关闭了就OK了。
2.我在GridView中放了一个复选框进行删除,但选中后点击删除就能删除,但是我选中后点击删除没有反映。我调试看了明明是选中了,但是调试的时候就是显示false,最后才知道是因为我if会发后有重写绑定GridView,所以虽然选中其实被重新加载了。所以调试的时候是选中状态是false.
3,在下拉框中实现让当前的值选中的代码如下:
foreach (DataGridItem dgi in RemarkGrid.Items)
{
DropDownList ddl1 = (DropDownList)dgi.FindControl("dept");//提交部门
ddl1.Items.Clear();
ddl1.DataSource = DBHelper.GetDept().Tables[0];
ddl1.DataTextField = "className";
ddl1.DataValueField = "classId";
ddl1.DataBind();
//让对应的部门显示在第一行
Guest guest = (Guest)DBHelper.GetGuestByGuestId(Convert.ToInt32
(RemarkGrid.DataKeys[dgi.ItemIndex]));
int deptid = guest.DepId;
for (int i = 0; i < ddl1.Items.Count; i++)
{
if (Convert.ToInt32(ddl1.Items[i].Value) == deptid)
{
ddl1.SelectedIndex = i;
}
}
}
4.在用到用户控件的时候出现了一个问题,就是不同目录下面引用用户控件会出现一个页面图片无法显示的 问题;解决办法是申明公有的变量,在要应用的页面中对变量进行赋值。
5.网站运行后当访问人数过多的时候就出现假死的情况,网页打不开,我在网上也看了不少的方法,最后自己也想了很多办法,最终的解决办法是把连接字符串中添加连接池:set max pool size=500;因为默认是100,当访问人数多的时候就出现这种情况,还有就是把该关掉的就关掉。
6.截取字符串的一个方法,一般截取字符串就是str.substring(0,10).但是这样截取的时候如果有标点和数字他的实际长度就比全部是汉字的短,这样就不美观。最好的办法是根据字节来截取,一个汉字是按照两个字节来算的。具体代码如下:
public static string GetNewTitle(string str, int count)
{
byte[] bt = System.Text.Encoding.Default.GetBytes(str);
string ss = "";
if (bt.Length> count)
{
ss = str.Substring(0, count);
}
else
{
ss = str;
}
return ss;
}
7.我在做网站的过程中遇到过这样一个问题,一个页面中有一个服务器控件Button,当我点击的时候我弹出来一个对话框,结果什么都没有。我看了下代码没有什么错误。就是不知道是什么原因,最好慢慢的找。终于知道什么原因了,是因为我这个页面中有一个非空验证控件对一个textbox 进行验证,但我点击button的时候textbox为空。textbox旁边就出现了一个红色的*,但是我没有看见以为点击了没有反映。
8.在我绑定gridview的时候出现了一个问题。每行的最后一行没有数据,是因为我把绑定代码写在
if (e.Item.ItemType != ListItemType.Footer && e.Item.ItemType != ListItemType.Header)
{
} 这个里面去了。所以每行的最后一行没有显示。只有写到外面就OK了。
9.在存储过程中实现分页的代码如下:
create PROCEDURE [dbo].[GetArticleByClassID]
@PageSize INT,
@PageIndex INT,
@ClassID INT,
@Search varchar(200),
AS
BEGIN
DECLARE @PageLowerBound INT
DECLARE @PageUpperBound INT
DECLARE @TotalRecords INT
SET @PageLowerBound = @PageSize * @PageIndex
SET @PageUpperBound = @PageSize - 1 + @PageLowerBound
SELECT @TotalRecords = @@ROWCOUNT
SELECT u.articleDate,(select count(*) from uv_file f where f.articleid=u.articleid) as hasFile,u.CanComment
FROM uv_Article u, #PageIndexForSub p
WHERE u.articleID=p.SubId and p.IndexId >= @PageLowerBound AND p.IndexId <= @PageUpperBound ORDER BY u.OrderSeq desc
暂时就写这么多吧。这只是我个人的见解,如果又什么好的建议大家可以提出来共同分享。