Question

Permettez-moi d'abord de m'excuser pour le mur du code. Fondamentalement, j'ai deux requêtes contre les listes SharePoint. Le code semble très bien fonctionner si je commente quelques lignes. Voici le code:

Mondial:

private string mUserName = "";
// Entity classes for the Sharepoint Lists
private SeatingChartContext _dc;
private EntityList<Seating_chartItem> _seatCharts;
private EntityList<UsersItem> _users;
private EntityList<Excluded_usersItem> _exusers;
private EntityList<RoomsItem> _rooms;
private EntityList<LogsItem> _logs;`

Chargement de la page:

// Get the Lists from Sharepoint
_dc = new SeatingChartContext(SPContext.Current.Web.Url);
_seatCharts = _dc.GetList<Seating_chartItem>("seating_chart");
_users = _dc.GetList<UsersItem>("users");
_exusers = _dc.GetList<Excluded_usersItem>("excluded_users");
_rooms = _dc.GetList<RoomsItem>("rooms");
_logs = _dc.GetList<LogsItem>("logs");`

Code principal:

try
{
    //  - - - - -   L O A D   T H E   * P E O P L E *   - - - - -

    // Create List objects
    List<Seating_chartItem> seatList = (from seat in _seatCharts where seat.Room == 0 where seat.Floor == floor select seat).ToList();
    List<UsersItem> usersList = (from user in _users select user).ToList();
    var xusersList = (from xuser in _exusers select xuser.User_id).ToList();
    usersList = usersList.Where(user => !xusersList.Contains(user.User_id)).ToList();

    // Query and use anonymous object for values
    var results = from seat in seatList
                  join user in usersList on
                  seat.User_id equals user.User_id
                  select new
                             {
                                 sid = seat.Seat_id,
                                 icon = seat.Icon,
                                 topCoord = seat.Top_coord,
                                 leftCoord = seat.Left_coord,
                                 name = user.Name,
                                 phone = user.Phone,
                                 mobile = user.Mobile,
                                 content = seat.Content
                             };

    results = results.Take(5);
    foreach (var r in results)
    {
        ImageButton img = new ImageButton();
        img.ID = "seat-" + r.sid;
        img.ImageUrl = "http://cxsmoss/rooms/" + r.icon;
        img.Style.Add(HtmlTextWriterStyle.Position, "absolute");
        img.Style.Add(HtmlTextWriterStyle.Top, r.topCoord + "px");
        img.Style.Add(HtmlTextWriterStyle.Left, r.leftCoord + "px");
        if (r.name == "")
            img.ToolTip = "no name!";
        else
            img.ToolTip = r.name;
        if (r.phone != "")
        {
            string phn = r.phone;
            if (phn.StartsWith("971")) // Comment this line
            {
                string extension = phn.Substring(phn.Length - 4, 4); //Comment this line
                img.ToolTip += Environment.NewLine + "x" + extension;

            }
            else
                img.ToolTip += Environment.NewLine + "x" + phn;
        }
        if (r.mobile != "")
            img.ToolTip += Environment.NewLine + "mobile:  " + r.mobile;
        img.ToolTip += Environment.NewLine + "room/cubicle: " + r.content.ToLower().Replace("seat ", "");
        img.PostBackUrl = ""; // "Default.aspx?name=" + row["name"].ToString();
        img.OnClientClick = "UpdateEmployeeInfo('" + r.name.ToString() + "', '" + img.ID + "');return false;";
        // For debugging size
        img.ToolTip += Environment.NewLine + "Results size " + results.Count();
        floorPanel.Controls.Add(img);
    }


    //  - - - - -   L O A D   T H E   * R O O M S *   - - - - -

    List<Seating_chartItem> seatListRooms = (from seatRoom in _seatCharts where seatRoom.Room == 1 where seatRoom.Floor == floor select seatRoom).ToList();
    List<RoomsItem> roomsList = (from room in _rooms select room).ToList();

    // Query and use anonymous object for values
    var res = from seatRoom in seatListRooms
              join room in roomsList on
              seatRoom.Seat_id equals room.Room_id
              select new
              {
                  rid = room.Room_id,
                  name = room.Name,
                  icon = seatRoom.Icon,
                  topCoord = seatRoom.Top_coord,
                  leftCoord = seatRoom.Left_coord,
                  phone = room.Phone,
                  content = seatRoom.Content
              };

    foreach (var s in res)
    {
        ImageButton img = new ImageButton();
        img.ID = "room-" + s.rid;
        //img.ID = row["icon"].ToString();
        img.ImageUrl = "http://cxsmoss/rooms/" + s.icon;
        img.Style.Add(HtmlTextWriterStyle.Position, "absolute");
        img.Style.Add(HtmlTextWriterStyle.Top, s.topCoord + "px");
        img.Style.Add(HtmlTextWriterStyle.Left, s.leftCoord + "px");
        img.ToolTip = s.name;
        if (s.phone != "")
            img.ToolTip += Environment.NewLine + "x" + s.phone;
        img.ToolTip += Environment.NewLine + "room " + s.content;
        img.OnClientClick = "UpdateRoomInfo('" + s.name + "', '" + img.ID + "');return false;";
        img.ToolTip += Environment.NewLine + "Res size " + results.Count();
        floorPanel.Controls.Add(img);
    }
}

Si je commente:

if (phn.StartsWith("971"))

et

string extension = phn.Substring(phn.Length - 4, 4);

Tout fonctionne bien. Si je les laisse dedans ne termine que le premier foreach. J'ai essayé de renommer toutes les variables de la deuxième requête, en jetant explicitement R.Phone pour lancer et en plaçant TOARRAY à la fin de la requête des résultats. Aucun de ces éléments n'a aidé.

Fait intéressant, si j'utilise results = results.Take(5); Pour en marcher quelques-uns, je reçois les chambres. Vérifiez le nombre de résultats et le nombre de Res (les résultats de la deuxième requête), ils sont tous deux les mêmes - 5.

Comment puis-je tout réinitialiser pour que je puisse à nouveau interroger mes listes?

Était-ce utile?

La solution

Est-il possible que PHN soit nul?

Essayez de remplacer R.Phone! = "" Par String.Isnullorempty (R.Phone) et / ou Activez les exceptions First Chance dans votre débogueur. (Debug-> Exceptions-> Exceptions d'exécution de langage commun [Vérifier])

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top