2011-01-21 9 views
0

私には奇妙な問題があります。私はここの例(http://www.4guysfromrolla.com/articles/071107-1.aspx)にしたがってajaxポップアップを表示していますが、正しく動作していません。Ajax Popupcontrollextenderの問題

イメージの属性が正しく設定されていないという問題があります。私はFirebugでチェックしました。これがロード後のページ1に表示されます。私は2ページに行けば今

<img src="StyleSheets/magglass.jpg" id="mainContent_TheGrid_MagGlass_0"> 

奇妙な、onmouseoverイベントは、すべてのイメージのために適切に設定されていると私は1ページに戻ってきた場合、それは、例えば、あまりにも適切に設定されています

<img src="StyleSheets/magglass.jpg" onmouseover="$find('pce0').showPopup(); " id="mainContent_TheGrid_MagGlass_0"> 

私は、コードを通じて段階とrowcreatedイベントは、各行

任意のアイデアのために、私のグリッドのために発射されていることを確認しましたか?

私のコードは、例と若干異なる、hidePopupメソッドを追加

protected void TheGrid_RowCreated(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     // Programmatically reference the PopupControlExtender 
     PopupControlExtender pce = e.Row.FindControl("TheGrid_PopupControlExtender") as PopupControlExtender; 

     // Set the BehaviorID 
     string behaviorID = string.Concat("pce", e.Row.RowIndex); 
     pce.BehaviorID = behaviorID; 

     // Programmatically reference the Image control 
     Image i = (Image)e.Row.Cells[0].FindControl("MagGlass"); 

     // Add the client-side attributes (onmouseover & onmouseout) 
     string OnMouseOverScript = string.Format("$find('{0}').showPopup(); ", behaviorID); 


     i.Attributes.Add("onmouseover", OnMouseOverScript); 

    } 
} 

GetDynamicContent方法は以下である(下記参照)。

[System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()] 
public static string GetDynamicContent(string contextKey) 
{ 

    GridView MyGrid = (GridView)HttpContext.Current.Session["TheGrid"]; 

    var MyVar = from GridViewRow MyRow in MyGrid.Rows 
       where MyRow.Cells[MyRow.Cells.Count - 1].Text == contextKey 
       select MyRow; 

    //This is the selected row by the user 
    GridViewRow MyGridRow = MyVar.SingleOrDefault(); 

    //MyGridRow.Cells[3].Text is the log entry. 
    string MyTable = @"<table class=""PopUpTable""><tr><td><textarea class=""textarea"">" 
     + MyGridRow.Cells[3].Text + "</textarea></td>"; 

    //MyGridRow.RowIndex is used to determine the name of popup control for the hidepopup script 
    MyTable += "<td><button type=\"button\" class=\"PopUpButton\" onclick=\"$find('pce" + MyGridRow.RowIndex.ToString() + "').hidePopup();\">Close</button></td></tr></table>"; 

    return MyTable; 

} 

これは、ここでLoadFromDB方法pageIndexChangingイベント

protected void TheGrid_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 

    TheGrid.PageIndex = e.NewPageIndex;  

     LoadFromDB(); 

} 

です:

private void LoadFromDB() 
{ 
    try 
    { 
     LOGDBDataContext LDC = new LOGDBDataContext(ConfigurationManager.ConnectionStrings[Constants.ConnectionStringName].ConnectionString); 



     string Query = @"DateTimeStamp >= @0 and DateTimeStamp <= @1"; 


     var Tolo = LDC 
        .Logs 
        .Where(Query, this.FromCalendar.SelectedDate, this.ToCalendar.SelectedDate) 
        .OrderBy("DateTimeStamp desc") 
        .Select("new (LogID, DateTimeStamp, Organization, LogEntry, ServerHostname)"); 


     TheGrid.DataSource = Tolo; 
     TheGrid.DataBind(); 



    } 


    catch (Exception ex) 
    { 
    //do something here 
    } 
} 

答えて

0

決して心は、答えを見つけました。

  1. 悪いデバッグ
  2. pagechangingイベントによって起動されていない たGridViewの

無能をクリア で貧しい試みあなたの名はyomismo

です