2009-06-26 52 views
0

我正在寫ASP.NET/C#項目,它是一個簡單的博客頁面與commnents。 問題我在點擊按鈕時看到的評論加載了原始blogload加上博客和評論,試圖讓它加載僅選中的博客/評論。 如果我嘗試不在page_load中加載博客,或者只有在不回顯時纔會顯示任何內容。任何幫助,將不勝感激。 PS我知道有很多博客引擎,但有特定的原因。什麼時候在ASP.NET中呈現頁面?

protected void Page_Init(object sender, EventArgs e) 
{ 
    //ParseControls(GlobalVar.pathxsltver); 
    //  BindInfo(); 
} 
private void ParseControls(string myxslt) 
{ 

    //load the data 
    FileStream fs = new FileStream(Server.MapPath (GlobalVar.compathver), FileMode.Open, FileAccess.Read, FileShare.ReadWrite); 
    DataSet dset = new DataSet(); 
    dset.ReadXml(fs); 
    fs.Close(); 
    XPathDocument xdoc = new XPathDocument(Server.MapPath(GlobalVar.pathver)); 
    XmlDocument mydoc = new XmlDocument(); 
    XPathNavigator navigator = xdoc.CreateNavigator(); 
    XPathExpression expression = navigator.Compile("BlogItems/Blog"); 
    expression.AddSort("ID", XmlSortOrder.Descending, XmlCaseOrder.UpperFirst, string.Empty, XmlDataType.Text); 
    XPathNodeIterator iterator = navigator.Select(expression); 
    int TheCnt = 0; 
    int cnt = GlobalVar.BlogCntDisplay; 
    string st = "<BlogItems>"; 
    foreach (XPathNavigator item in iterator) 
    { 
     TheCnt++; 
     string sid = item.SelectSingleNode("ID").Value; 
     st = st + "<Blog id=\"" + sid + "\">" + item.InnerXml; 
     st = st + "<ComCnt>" + MyFunc.CountComments (sid,dset) + "</ComCnt></Blog>"; 
     if (TheCnt == cnt) { break; } 
    } 
    st = st + "</BlogItems>"; 
    mydoc.LoadXml(st); 
    XslCompiledTransform transform = new XslCompiledTransform(); 
    XsltSettings settings = new XsltSettings(true,true); 
    transform.Load(Server.MapPath(myxslt),settings,null); 
    StringWriter sw = new StringWriter(); 
    transform.Transform(mydoc, null, sw); 
    string result = sw.ToString(); 
    //remove namespace 
    result = result.Replace("xmlns:asp=\"remove\"", ""); 
    //parse control 
    Control ctrl = Page.ParseControl(result); 
    //find control to add event handler 
    //Boolean test = phBlog.FindControl("btnComment2").i; 
    phBlog.Controls.Add(ctrl); 
    XmlNodeList nList = mydoc.SelectNodes("//BlogItems/Blog/ID"); 
    foreach (XmlNode objNode in nList) 
    { 
    Button btnComment = (Button) phBlog.FindControl("btnComment"+objNode.InnerText); 
    btnComment.CommandArgument = objNode.InnerText ; 
     btnComment.BorderWidth = 0 ; 

    btnComment.Command += new CommandEventHandler(Button1_Click); 
    } 
} 

protected void Page_Load(object sender, EventArgs e) 
{ 

    //if (!Page.IsPostBack) 
    //{ParseControls(GlobalVar.pathxsltver);} 
    ParseControls(GlobalVar.pathxsltver); 
    } 

protected void Button1_Click(object sender, CommandEventArgs e) 
{ 
    Label1.Text = "Comm hit : " + e.CommandArgument.ToString(); 
    ParseControls(GlobalVar.blogcommentsver); 
} 

回答

1

你的問題有點含糊,但如果我正確理解你,你想知道爲什麼整個頁面刷新時,你只是想處理按鈕點擊?

無論何時做任何形式的回發,並且包括處理任何事件,都會重新呈現整個頁面。除此之外,您正在使用一個全新的頁面類實例。舊的已經死了,走了。這正是網絡正常工作的方式。

如果您只想重新加載頁面的一部分,則需要使用ajax。在ASP.Net域中,這意味着將您的評論部分放入可刷新的UpdatePanel控件中。

相關問題