Send paremeters to telerik mvc grid ajax select

20 ביולי 2012

אין תגובות

בהנחה שאתם משתמשים עם telerik mvc grid, והחלטתם להשתמש עם יכולות ה – ajax data binding שלהם, סביר להניח שתכתבו משהו דומה לכך

@(Html.Telerik().Grid(Model)

    .Name("BarakUsersGrid")

    .Columns(columns =>

    {

        columns.Bound(p => p.location_name).Width(27);

        columns.Bound(p => p.main_contact_person).Width(27);

        columns.Bound(p => p.location_company_name).Width(40);

    })

    .DataBinding(dataBinding => dataBinding

                    .Ajax()

                    .Select("getUserInfo", "UserActivation"))

    .Scrollable(x => { x.Height(100); })

    .Sortable()

    .Filterable()

    .Selectable())

לא אסביר בפוסט זה את השימוש בטלריק, אך נתמקד בבעיה אחת, נניח שה – action בצד השרת נראה כך:

[GridAction]

public ActionResult getUserInfo(int location_id = 0)

{

    //.. code

}

כלומר אם צריכים לשלוח ל – action פרמטר אין ממש דרך לעשות זאת.

מסתבר שטלריק לא תומכים בצורה מובנית באופציה.

כדי לעשות זאת נצטרך לכתוב קוד כזה:

function changeUrlSuffix(userId) {

    var grid = $('#BarakUsersGrid').data('tGrid');

    var url = grid.ajax.selectUrl;

    var location = FindByName('location_id', url);

    var lId = AllUsersModel.selectedUser().userId();

    if (location == ") {

        grid.ajax.selectUrl += '?location_id=' + lId;

    }

    else {

        grid.ajax.selectUrl = grid.ajax.selectUrl.replace(location, lId);

    }

}

נצטרך כמובן לדאוג להפעיל את הפונקציה הזו ידנית בכל פעם שהפרמטר userId משתנה (למשל בעת בחירה בקומבו)

הפונקציה הזו תדע להוסיף או להחליף את הערך המתאים בכל פעם.

(הפונקציה FindByName – גרסה א, גרסה ב)

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *