Ananth.Ganapathy Ответов: 3

Отображение записей в WebGrid из двух таблиц Подробнее


привет друзья

это мои классы моделей

общественный разделяемого класса tbl_staticfielddetails
{
public Nullable<int> institutionid { get; set; }
public string fieldname { get; set; }
общественного строка-обязательный { получить; набор; }
public string predefinedvalue { get; set; }
public string fieldpattern { get; set; }
публичная строка errormsg { get; set; }
public string minimum { get; set; }
public string maximum { get; set; }
public int fieldorder { get; set; }
public string tooltype { get; set; }
тип данных публичных строку { получить; набор; }
публичная строка disptype { get; set; }
public int id { get; set; }
public string status { get; set; }
публичная строковая метка { get; set; }
публичная строка instructuser { get; set; }
}

общественный разделяемого класса tbl_student
{
public int Stud_id { get; set; }
public int institutionid { get; set; }
общественного строка имя { получить; набор; }
public string middlename { get; set; }
общественного строка имя { получить; набор; }
публичная строка studentimage { get; set; }
общественного значения null&ЛТ;долго&ГТ; admissionnumber { получить; набор; }
публичная строка admissionforclass { get; set; }
общественного значения null&ЛТ;система.датавремя&ГТ; dateofadmission { получить; набор; }
общественного значения null&ЛТ;долго&ГТ; boardregisternumber { получить; набор; }
общественного значения null&ЛТ;система.датавремя&ГТ; dateofbirth { получить; набор; }
общественного строка пол { получить; набор; }
публичная строка isactive { get; set; }

}

ниже приведены две таблицы, соответствующие моделям.

http://sqldiscussion.com/wp-content/uploads/2014/08/WebGrid-Image.png[^]

пожалуйста, обратитесь к изображению

я хочу, чтобы отобразить в таблице 2 записи в webgrid

но его заголовок столбца отсылается к полю метки таблицы 1.

мое требование заключается в том, как спроектировать класс модели, а также метод контроллера для отображения записей в webgrid .

заранее спасибо.

3 Ответов

Рейтинг:
20

Ananth.Ganapathy

привет Натан Минье,

я получил ответ.

спасибо за ваш ответ.

http://forums.asp.net/t/2000875.aspx?Problem+Display+Records+in+Webgrid


Рейтинг:
2

indrajeet_pat123

Я столкнулся с той же проблемой и нашел решение. Я использую WebGrid для связывания данных из двух таблиц и отображения на одной странице.

public class HomeController : BaseController
    {
        [HttpGet]
        public async Task<actionresult> Index()
        {

            string loginUserId = TempData[WebConstants.LoginUserId].ToString();
            string loginUserName = TempData[WebConstants.LoginUserName].ToString();
            string authmode = TempData[WebConstants.AuthenticationMode].ToString();
            HttpResponseMessage response_Cat = null;
            HttpResponseMessage response_Printer = null;
            IEnumerable<catridge> list_Cat = null;
            IEnumerable<printer> list_Printer = null;

            if (loginUserId == "1" && authmode == "Admin")
            {
                CustomLogger.Write("Service Call: Get All Catridge: Start");
                response_Cat = await ServiceGet(ClientConfig.ServiceLayerUrl + ClientConfig.GetAllCatridgeUrl);
                CustomLogger.Write("Service Call: Get All Catridge: End");

                var result_Cat = response_Cat.Content.ReadAsStringAsync().Result;
                list_Cat = JsonConvert.DeserializeObject<ienumerable<catridge>>(result_Cat).OrderByDescending(s => s.Id);                    


                CustomLogger.Write("Service Call: Get All Printer: Start");
                response_Printer = await ServiceGet(ClientConfig.ServiceLayerUrl + ClientConfig.GetAllPrinterUrl);
                CustomLogger.Write("Service Call: Get All Printer: End");

                var result_Printer = response_Printer.Content.ReadAsStringAsync().Result;
                list_Printer = JsonConvert.DeserializeObject<ienumerable<printer>>(result_Printer).OrderByDescending(s => s.Id);                    

                dynamic mymodel = new ExpandoObject();
                mymodel.Catridge = list_Cat;
                mymodel.Printer = list_Printer;
                return View(mymodel);

            }


            else
            {
                CustomLogger.Write("Service Call: GetAllPrinters: Failed|" + response_Printer);
                ModelState.AddModelError(Resources.Resource.MasterError, Resources.Resource.UnableToProcessRequest);
                list_Printer = new List<printer>();
                return View(list_Printer.AsEnumerable());
            }

        }

    }
Теперь я привязал данные результата контроллера к WebGrid в MVC.

Имя представления MVC : Index.cshtml
@model dynamic   


<div class="container">
    <div class="row">
        <h1 class="mainHeading col-md-12">Cartridge List</h1>
    </div>  

    <div class="row">
        @{
            WebGrid grid_Cart = new WebGrid(Model.Catridge, canPage: true, rowsPerPage: 5);
            @grid_Cart.GetHtml(
         htmlAttributes: new { id = "GridTable_Cart" },
         tableStyle: "table table-bordered table-striped",

        columns: new[] {
grid_Cart.Column("TeamName",header: "Team Name", canSort:false,style : "gridTableID"),
grid_Cart.Column("PartNo",header: "PartNo", canSort:false,style : "gridTableID"),
grid_Cart.Column("PrinterName",header: "Printer Name", canSort:false,style : "gridTableID"),
grid_Cart.Column("LoginUserName",header: "Requester Name", canSort:false,style : "gridTableID"),
grid_Cart.Column("CatridgeColor",header: "Cartridge Color", canSort:false,style : "gridTableID"),
grid_Cart.Column("CatridgeDrumsColor",header: "DrumsColor", canSort:false,style : "gridTableID"),
grid_Cart.Column("Others",header: "Others", canSort:false,style : "gridTableID"),
grid_Cart.Column("AssigneeName",header: "Assignee", canSort:false,style : "gridTableID"),
grid_Cart.Column("Status",header: "Status", canSort:false,style : "gridTableID")
     })
        }

    </div>
</div>

<div class="container">
    <div class="row">
        <h1 class="mainHeading col-md-12">Printer List</h1>
    </div>

    <div class="row">
        @{
            WebGrid grid_printer = new WebGrid(Model.Printer, canPage: true, rowsPerPage: 5);
            @grid_printer.GetHtml(
    htmlAttributes: new { id = "GridTable_Printer" },
    tableStyle: "table table-bordered table-striped",

    columns: new[] {
    grid_printer.Column("TeamName",header: "Team Name", canSort:false,style : "gridTableID"),
    grid_printer.Column("PrinterName",header: "Printer Name", canSort:false,style : "gridTableID"),
    grid_printer.Column("Version",header: "Version", canSort:false,style : "gridTableID"),
    grid_printer.Column("Bundle",header: "Printer Bundle", canSort:false,style : "gridTableID"),
    grid_printer.Column("PrinterFloorNo",header: "FloorNo", canSort:false,style : "gridTableID"),
    grid_printer.Column("PrinterDeskNo",header: "DeskNo", canSort:false,style : "gridTableID"),
    grid_printer.Column("AssigneeName",header: "Assignee", canSort:false,style : "gridTableID"),
    grid_printer.Column("Status",header: "Status", canSort:false,style : "gridTableID")
                })
        }

    </div>
</div>
Пожалуйста, дайте нам знать, если кому-то понадобятся дополнительные разъяснения.


phil.o

Я серьезно сомневаюсь, что кто-то захочет пройти через эту кучу кода, чтобы попытаться найти в ней какой-либо практический смысл. Дамп кода, не говоря уже об огромном, бесполезен без надлежащего объяснения и привязки к реальному контексту.

CHill60

Я привел в порядок его код. Я видел отчет на форуме S & A, который мне показался немного резким.

phil.o

Это действительно был Харш. Я не сообщал ни о пользователе, ни о решении, но я думаю, что такого рода ответы, не связанные с контекстом OP, никому не помогут.

CHill60

Я считаю, что вы получаете пониженный голос, потому что ваше решение выглядело как необъяснимый дамп кода... и первоначальный вопрос довольно стар. Я попытался отформатировать ваше решение, чтобы сделать его более презентабельным, и выделить ваш комментарий.
Когда вы вставляете что-либо в решение, вам предлагается всплывающее меню, которое автоматически форматирует код, кавычки и т. д. Вы должны использовать его. Кроме того, вы можете выделить разделы вашего решения и использовать меню в верхней части поля ввода для форматирования разделов кода.

Рейтинг:
1

Nathan Minier

Создайте модель представления, которая включает в себя эти два элемента. Вы можете извлечь и то, и другое из своего репозитория в контроллере и использовать перегрузку конструктора для объектов.

Затем просто верните List<myviewmodel> и постройте из него сетку.


public class MyViewModel
{
    public tbl_student Student { get; set; }

    //any label properties needed

    public MyViewModel(tbl_staticfielddetails details, tbl_student student)
    {
        Student = student;
        //set appropriate properties from details
    }
}