佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

楼主: shinelynn

.net 求救 (Server.MapPath)

[复制链接]
发表于 1-8-2006 10:29 AM | 显示全部楼层
原帖由 shinelynn 于 1-8-2006 08:43 AM 发表
http://support.microsoft.com/kb/175168/EN-US/
这好用,save进favorite了。。

解决了,是read/write的问题,我以为是folder的read/write,所以便向server的人要求write的access,可是原来是ms access那里的 ...

恭喜楼主。。。
我也学到,原来not updatable query是说DATABASE有问题。。
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 1-8-2006 01:57 PM | 显示全部楼层
我刚才试了突然可以了,可是后来又不可以了。。

我现在要update data,update的sql statement没error,可是text field的text不给我换。好像很少人用update query的。。想要换用editable grid,又好像很难。。


图1) User Name 本来的text是User 123,这些data是在page load的时候从database拿了放进来的。



图2) 我把它换去Test Edit,然后按"Edit"



图3) 我把sql statement display在一个label里面,奇怪为什么我的user name会变回本来的text的(图1)?txtUserName也变回原来的text了。。



[ 本帖最后由 shinelynn 于 1-8-2006 03:19 PM 编辑 ]
回复

使用道具 举报

发表于 1-8-2006 02:15 PM | 显示全部楼层
1) EnableViewState = true (可以postback)
2) 把sql statement connection 放在:

   if not ispostback then

   end if
回复

使用道具 举报

 楼主| 发表于 1-8-2006 03:26 PM | 显示全部楼层
原帖由 笨陈 于 1-8-2006 02:15 PM 发表
1) EnableViewState = true (可以postback)
2) 把sql statement connection 放在:

   if not ispostback then

   end if

噢,可以了,谢谢。。

C#的写法是

if (!(Page.IsPostBack))
{
}

可是很奇怪为什么我刚才没放postback也能update。。

[ 本帖最后由 shinelynn 于 1-8-2006 03:36 PM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2-8-2006 10:54 AM | 显示全部楼层
我先用用户名"ABC"进系统,Session["User"] = "ABC",browse过的page有1.aspx和2.aspx。。然后log out,log out时已经放了Session.RemoveAll()和Session.Abandon()

过后,我又用回同一个browser,用户是"XYZ",Session["User"] = "XYZ"。"XYZ"只有authorize看1.aspx,不能进入2.aspx,当我想进入1.aspx时,Session["User"] 对,可是假如我manually type 2.aspx在browser的address时,它的session automatically换去第一个user "ABC"了。。在我按log out时,它才跑回"XYZ",然后再按log out,才退出系统。

看来我在"ABC" log out 时,并没有完全的remove掉Session["User"]的value,有人遇过这样的问题吗?怎么解决?
回复

使用道具 举报

发表于 2-8-2006 11:22 AM | 显示全部楼层
原帖由 shinelynn 于 2-8-2006 10:54 AM 发表
我先用用户名"ABC"进系统,Session = "ABC",browse过的page有1.aspx和2.aspx。。然后log out,log out时已经放了Session.RemoveAll()和Session.Abandon()

过后,我又用回同一个browser, ...

试试看logout 的时候 SESSION["User"]=""
回复

使用道具 举报

Follow Us
发表于 2-8-2006 12:44 PM | 显示全部楼层
原帖由 shinelynn 于 2-8-2006 10:54 AM 发表
我先用用户名"ABC"进系统,Session = "ABC",browse过的page有1.aspx和2.aspx。。然后log out,log out时已经放了Session.RemoveAll()和Session.Abandon()

过后,我又用回同一个browser, ...



我想, 你的资料库里第一个 user 应该是 ABC 吧. 不是你没清除 session, 而是你没在每一页检查 session 是否存在和正确.
回复

使用道具 举报

 楼主| 发表于 2-8-2006 01:12 PM | 显示全部楼层
原帖由 弥勒 于 2-8-2006 11:22 AM 发表

试试看logout 的时候 SESSION["User"]=""


试过了。。不能。。
回复

使用道具 举报


ADVERTISEMENT

发表于 2-8-2006 01:22 PM | 显示全部楼层
原帖由 shinelynn 于 2-8-2006 01:12 PM 发表


试过了。。不能。。

LOGIN之前弄那个SESSION["USER"="";
回复

使用道具 举报

 楼主| 发表于 2-8-2006 01:22 PM | 显示全部楼层
原帖由 goatstudio 于 2-8-2006 12:44 PM 发表



我想, 你的资料库里第一个 user 应该是 ABC 吧. 不是你没清除 session, 而是你没在每一页检查 session 是否存在和正确.


有,有查。而database里"ABC"并不是第一个user。其实我有把Session["User"] display在我的page里,所以"ABC" log in时,那label就回display"ABC","XYZ" log in时,那label就display "XYZ",可是当我manual type 之前已经log out 了的"ABC" visit 过可是"XYZ"没visit过的page时,我的Session ["User"]却会变成"ABC"了。要是我refresh那页一次,"ABC"不见了却又变回"XYZ"。。
回复

使用道具 举报

发表于 2-8-2006 01:41 PM | 显示全部楼层
原帖由 shinelynn 于 2-8-2006 01:22 PM 发表


有,有查。而database里"ABC"并不是第一个user。其实我有把Session display在我的page里,所以"ABC" log in时,那label就回display"ABC","XYZ" log in时,那label就 ...

照酱推断。。。偶应该知道问题了。。。
你用ABC LOGIN 后。。VISIT过那个PAGE。。
然后呢那个LABEL就SHOW ABC 咯。。。
过后你LOGOUT的时候因为那个PAGE没有POSTBACK。。。
所以还是SHOW着ABC吧。。。
你用Server.Transfer("xxx.aspx)还是redirect?
goatstudio你有什么想法吗。。。
回复

使用道具 举报

 楼主| 发表于 2-8-2006 04:40 PM | 显示全部楼层
原帖由 弥勒 于 2-8-2006 01:41 PM 发表

照酱推断。。。偶应该知道问题了。。。
你用ABC LOGIN 后。。VISIT过那个PAGE。。
然后呢那个LABEL就SHOW ABC 咯。。。
过后你LOGOUT的时候因为那个PAGE没有POSTBACK。。。
所以还是SHOW着ABC吧。。。
你用 ...


用redirect,可是我用"XYZ" log in时它已经show "XYZ" 了啊?

啊,做programming眼睛很痛。。

private void lbLogOut_Click(object sender, System.EventArgs e)
                {
                        Session["User"] = "";
                        Session.RemoveAll();
                        Session.Abandon();

                        Response.Redirect("main.aspx?msg=logout";
                }

main.aspx
if (!(Page.IsPostBack))
                        {
                                string strMsg = Request.QueryString["msg"];
                                if (strMsg == "Expired"
                                {
                                        lblError.Text="Session Expired, please log in again!";
                                }
                       
                                if (strMsg == "logout"
                                {
                                        lblError.Text = "You have log out successfully!";
                                        Session["User"] = "";
                                        Session.RemoveAll();
                                        Session.Abandon();
                                }
                        }
回复

使用道具 举报

发表于 2-8-2006 04:52 PM | 显示全部楼层
原帖由 shinelynn 于 2-8-2006 04:40 PM 发表


用redirect,可是我用"XYZ" log in时它已经show "XYZ" 了啊?

啊,做programming眼睛很痛。。

private void lbLogOut_Click(object sender, System.EventArgs e)
                {
                        Sess ...

我看是因为没有POSTBACK。。。试下用SERVER。TRANSFER 看看。。
偶是说从别的PAGE去那个SHOW着ABC的时候用SERVER。TRANSFER。。
偶也是ASP。NET新手。。。。

希望表见怪。

[ 本帖最后由 弥勒 于 2-8-2006 04:54 PM 编辑 ]
回复

使用道具 举报

发表于 3-8-2006 01:56 AM | 显示全部楼层
原帖由 shinelynn 于 2-8-2006 01:22 PM 发表

有,有查。而database里"ABC"并不是第一个user。其实我有把Session["User"] display在我的page里,所以"ABC" log in时,那label就回display"ABC","XYZ" log in时,那label就display "XYZ",可是当我manual type 之前已经log out 了的"ABC" visit 过可是"XYZ"没visit过的page时,我的Session ["User"]却会变成"ABC"了。要是我refresh那页一次,"ABC"不见了却又变回"XYZ"。。


按照这样的情况... 很可能是 cache 的问题.

Internet Explorer -> Tools -> Internet Option -> Settings -> Every visit to the page.
回复

使用道具 举报

 楼主| 发表于 3-8-2006 07:48 AM | 显示全部楼层
原帖由 goatstudio 于 3-8-2006 01:56 AM 发表


按照这样的情况... 很可能是 cache 的问题.

Internet Explorer -> Tools -> Internet Option -> Settings -> Every visit to the page.


可以了。。谢谢。。什么是cache?

可是。。我不能肯定用户的setting都是这样啊。。 我找看有什么方法用户一log in,IE的setting会automatically换掉。。
回复

使用道具 举报

发表于 3-8-2006 09:16 AM | 显示全部楼层
原帖由 shinelynn 于 3-8-2006 07:48 AM 发表


可以了。。谢谢。。什么是cache?

可是。。我不能肯定用户的setting都是这样啊。。 我找看有什么方法用户一log in,IE的setting会automatically换掉。。


通常会这样是设计出了缺陷, 或某些原因导致你的 data 被 chache 着.
我现在无法告诉你出了什么缺陷. 但是, 要解决的话, 是可以的.

1. 有个 clear cache 的方法... 看这里:
http://www.ondotnet.com/pub/a/do ... /cachingaspnet.html

2. 真的没办法的话, 在每一次去这个 page, 放一个 random dummy number 在后面.
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 10-8-2006 12:46 PM | 显示全部楼层
原帖由 goatstudio 于 3-8-2006 09:16 AM 发表


通常会这样是设计出了缺陷, 或某些原因导致你的 data 被 chache 着.
我现在无法告诉你出了什么缺陷. 但是, 要解决的话, 是可以的.

1. 有个 clear cache 的方法... 看这里:
http://www.ondotnet.com/pub/ ...


谢谢。。可是放了clear cache的code,还是不可以。。我再看看怎样。。
回复

使用道具 举报

 楼主| 发表于 10-8-2006 12:53 PM | 显示全部楼层
很奇怪我的datagrid,我allow paging,可是它的"next"并不能用,datagrid 还是 display着page 1的record。。有什么地方我忘了set吗?
回复

使用道具 举报

 楼主| 发表于 10-8-2006 01:11 PM | 显示全部楼层
虽然觉得这不是程序错误所造成,还是放上来。。希望大家可以帮我看看。。




aspx 里的datagrid
<asp:datagrid id="DGUserList" style="Z-INDEX: 103; LEFT: 17px; POSITION: absolute; TOP: 168px" runat="server" BorderStyle="Double" AllowPaging="True" BorderWidth="3px" CellPadding="3" AutoGenerateColumns="False">
        <AlternatingItemStyle BackColor="#E0E0E0"></AlternatingItemStyle>
        <HeaderStyle BackColor="Silver"></HeaderStyle>
        <FooterStyle BackColor="Silver"></FooterStyle>
        <Columns>
                <asp:BoundColumn DataField="USER_ID" HeaderText="User ID">
                        <ItemStyle Wrap="False"></ItemStyle>
                </asp:BoundColumn>
                <asp:BoundColumn DataField="USER_NAME" HeaderText="Name">
                        <ItemStyle Wrap="False"></ItemStyle>
                </asp:BoundColumn>
                <asp:BoundColumn DataField="USER_TEL" HeaderText="Tel No">
                        <ItemStyle Wrap="False"></ItemStyle>
                </asp:BoundColumn>
                <asp:BoundColumn DataField="USER_FAX" HeaderText="Fax No">
                        <ItemStyle Wrap="False"></ItemStyle>
                </asp:BoundColumn>
                <asp:BoundColumn DataField="USER_EMAIL" HeaderText="Email">
                        <ItemStyle Wrap="False"></ItemStyle>
                </asp:BoundColumn>
                <asp:BoundColumn DataField="USER_GROUP" HeaderText="Group">
                        <ItemStyle Wrap="False"></ItemStyle>
                </asp:BoundColumn>
                        <asp:HyperLinkColumn Text="Edit/Delete" DataNavigateUrlField="User_ID" DataNavigateUrlFormatString="edituser.aspx?user_id={0}"></asp:HyperLinkColumn>
        </Columns>
</asp:datagrid>

aspx.cs里的程序
private void Create_UserList()
{
        //DataServer = a class where I put all the functions
        DataServer DS = new DataServer();

        DataTable dt = new DataTable();

        //ListData is a function in DataServer that return a DataTable for "select" sql
        dt = DS.ListData("SELECT * FROM TBL_USER ORDER BY USER_ID");

        DataView dv = new DataView(dt);

        //DGUserList is the DataGrid Name
        DGUserList.DataSource = dv;
        DGUserList.DataBind();               
}

[ 本帖最后由 shinelynn 于 10-8-2006 01:13 PM 编辑 ]
回复

使用道具 举报

发表于 11-8-2006 12:42 AM | 显示全部楼层
你的 paging code 呢? 我的意思是说当 page index change 的时候的 code.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 21-9-2025 08:57 AM , Processed in 0.142738 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表