Проблемы Ajax Popupcontrolextender - PullRequest
       2

Проблемы Ajax Popupcontrolextender

0 голосов
/ 21 января 2011

У меня странная проблема.Я следовал приведенному здесь примеру (http://www.4guysfromrolla.com/articles/071107-1.aspx), чтобы отобразить всплывающее окно ajax, но оно не работает должным образом.

У меня проблема в том, что атрибуты изображения установлены неправильно, я проверил с помощью Firebug, и эточто я получаю на странице 1 после загрузки.

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

Теперь странно, если я перехожу на страницу 2, событие onmouseover устанавливается правильно для всех изображений, и если я возвращаюсь на страницу 1, оно устанавливаетсятоже правильно, например

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

Я прошел по коду и подтвердил, что событие rowcreated запускается для моей сетки, для каждой строки

Любые идеи?

Мой коднемного отличается от примера, см. ниже

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, который добавляет метод hidepopup.

   [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;

}

Это событие pageIndexChanging

  protected void TheGrid_PageIndexChanging(object sender, GridViewPageEventArgs e)
{

    TheGrid.PageIndex = e.NewPageIndex;      

        LoadFromDB();

}

Метод 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
    }
}

1 Ответ

0 голосов
/ 21 января 2011

Never Mind, нашел ответ.

  1. Плохая отладка
  2. Плохая попытка очистить сетку, которая не была вызвана событием смены страниц

Некомпетентность твое имя йомизмо

...