Asp.net mvc da tekshiruv qurilmasiga ma'lumotlarni uzatish tarmoqlarini qanday qilib yuborish mumkin

Datagridni devekstrem bilan ishlatishim kerak. asp.net mvc da tekshiruv qurilmasiga datagridni qanday yuborishi mumkin? Buni mening nuqtai nazardan sinab ko'rdim:

  @using (Html.BeginForm("action-name", "controller-name", FormMethod.Post))
            {
                <div id="frm"></div>
                <div id="grid"></div>
                <div class="submit-button" id="submitBtn"></div>
            }

va bu mening modelim:

public class class-name
    {
        public int id { get; set; }
        public string Name { get; set; }
        public string FName { get; set; }
        public ContactInfo ContactInfo { get; set; }
    }

 public class ContactInfo
    {
        public string type { get; set; }
        public string value { get; set; }
    }

my contoller-da ariza ma'lumotlarimni (sinf nomi) olaman, lekin grid ma'lumotlari (ContactInfo) null

1
Tizimda tahrirlashni ishlatasizmi? Ma'lumotlar paneli imkoniyatlari haqida ma'lumot bera olasizmi? Yana bir muhim narsa, siz DevExtreme versiyasidan foydalanasiz?
qo'shib qo'ydi muallif Sergey, manba
Men 16.2 versiyani ishlataman. va ha, satrlarni qo'shish, yangilash va o'chirish. Lekin tugmani bosganimda tugmani bosganimda katalogga datagriddagi barcha ma'lumotlarni tekshiruvchilarimga qanday yuborishi mumkin, tugma bosilgandagidek va formadagi ma'lumotlar mening tekshirgichimga yuboradi.
qo'shib qo'ydi muallif leman17, manba

6 javoblar

Sizning davlatingizda DevExtreme uchun ASP.NET MVC paketlarini foydalanishingiz mumkin . Bunday holda WebApi tekshiruvchiga quyidagi jadvalni ulashingiz mumkin:

@(Html.DevExtreme().DataGrid()
    .DataSource(ds => ds
        .WebApi()
        .Controller("GridData")
        .Key("OrderID")
        .LoadAction("GetAllOrders")
        .InsertAction("InsertOrder")
        .UpdateAction("UpdateOrder")
        .DeleteAction("RemoveOrder")
    )
)

Nazoratchi:

 public class DataGridWebApiController : ApiController {

    [HttpGet]
    public HttpResponseMessage GetAllOrders(DataSourceLoadOptions loadOptions) {
        //...
    }

    [HttpPost]
    public HttpResponseMessage InsertOrder(FormDataCollection form) {
        //...
    }

    [HttpPut]
    public HttpResponseMessage UpdateOrder(FormDataCollection form) {
        //...
    }

    [HttpDelete]
    public void RemoveOrder(FormDataCollection form) {
        //...
    }
 }

Xullas, barcha ma'lumotlar ma'lumotlarini server tomoniga yuborish shart emas. Faqat yangilangan ma'lumotlarni boshqarish.

Ushbu maqola .

bu demodan ham ko'ring.

2
qo'shib qo'ydi
Nima uchun barcha ma'lumotlar jo'rlarini server tomoniga joylashtirmoqchisiz? Bir oz g'alati eshitiladi. O'rnatilgan dxDataGrid funksiyasidan foydalanib ma'lumotlar o'zgarishini qayta ishlashingiz mumkin. Demak, CRUD operatsiyalari uchun tekshiruvchilarni qo'llash va datagrid uchun tahrirlashni yoqish. Yuqoridagi misol kabi.
qo'shib qo'ydi muallif Sergey, manba
leman17 o'zgargan jadval ma'lumotlarini o'z shaklidagi boshqa ma'lumotlar bilan birgalikda bitta formada POST yuborish bilan birga saqlamoqchi. Bu vazifani qanday bajarish kerakligini o'ylayman.
qo'shib qo'ydi muallif Sven, manba
zo'rku! ammo men yuboradigan menyusga bosganimda ma'lumotni qanday qilib joylashtirishi mumkin (har ikkala formam va grid ma'lumotlari ham). onclick usuli tugmachasini sinab ko'rdim va undagi ajaxdan foydalanardim, lekin muvaffaqiyatli emas edim.
qo'shib qo'ydi muallif leman17, manba

Sizning davlatingizda DevExtreme uchun ASP.NET MVC paketlarini foydalanishingiz mumkin . Bunday holda WebApi tekshiruvchiga quyidagi jadvalni ulashingiz mumkin:

@(Html.DevExtreme().DataGrid()
    .DataSource(ds => ds
        .WebApi()
        .Controller("GridData")
        .Key("OrderID")
        .LoadAction("GetAllOrders")
        .InsertAction("InsertOrder")
        .UpdateAction("UpdateOrder")
        .DeleteAction("RemoveOrder")
    )
)

Nazoratchi:

 public class DataGridWebApiController : ApiController {

    [HttpGet]
    public HttpResponseMessage GetAllOrders(DataSourceLoadOptions loadOptions) {
        //...
    }

    [HttpPost]
    public HttpResponseMessage InsertOrder(FormDataCollection form) {
        //...
    }

    [HttpPut]
    public HttpResponseMessage UpdateOrder(FormDataCollection form) {
        //...
    }

    [HttpDelete]
    public void RemoveOrder(FormDataCollection form) {
        //...
    }
 }

Xullas, barcha ma'lumotlar ma'lumotlarini server tomoniga yuborish shart emas. Faqat yangilangan ma'lumotlarni boshqarish.

Ushbu maqola .

bu demodan ham ko'ring.

2
qo'shib qo'ydi
Nima uchun barcha ma'lumotlar jo'rlarini server tomoniga joylashtirmoqchisiz? Bir oz g'alati eshitiladi. O'rnatilgan dxDataGrid funksiyasidan foydalanib ma'lumotlar o'zgarishini qayta ishlashingiz mumkin. Demak, CRUD operatsiyalari uchun tekshiruvchilarni qo'llash va datagrid uchun tahrirlashni yoqish. Yuqoridagi misol kabi.
qo'shib qo'ydi muallif Sergey, manba
leman17 o'zgargan jadval ma'lumotlarini o'z shaklidagi boshqa ma'lumotlar bilan birgalikda bitta formada POST yuborish bilan birga saqlamoqchi. Bu vazifani qanday bajarish kerakligini o'ylayman.
qo'shib qo'ydi muallif Sven, manba
zo'rku! ammo men yuboradigan menyusga bosganimda ma'lumotni qanday qilib joylashtirishi mumkin (har ikkala formam va grid ma'lumotlari ham). onclick usuli tugmachasini sinab ko'rdim va undagi ajaxdan foydalanardim, lekin muvaffaqiyatli emas edim.
qo'shib qo'ydi muallif leman17, manba

har bir ustun uchun cellTemplate dan foydalanishingiz mumkin, va yashirin kiritishni ishlatishingiz kerak. Masalan, ushbu kodni nazarda tuting:

factory.Add().DataField("Mobile")
             .CellTemplate(@
              <%= text %>
              <input type='hidden' name='Addresses[<%= rowIndex %>].Mobile' value='<%= value %>' />
              );

text,rowIndex,value is DevExtreme object. for more info please check the cellInfo section of link. https://js.devexpress.com/Documentation/ApiReference/UI_Widgets/dxDataGrid/Configuration/columns/?search=columns

2
qo'shib qo'ydi
Iltimos, linklar atrofidagi ba'zi kontekstni qo'shing, tegishli tarkibiy qismlarni nusxa oling va sayt mazmuni o'zgartirilsa yoki mavjud bo'lmasa, ularni yonida joylashtiring.
qo'shib qo'ydi muallif LW001, manba
Salom Mustafo, rahmat. Mening stsenariyim bir oz boshqacha: Tanlangan qatorlarni faqat mahalliy ma'lumotlarga bog'langan TreeList tekshiruvida yozmoqchiman.
qo'shib qo'ydi muallif Sven, manba
Bu hali hammasi hal qilinganmi?
qo'shib qo'ydi muallif Sven, manba
@Sizda gridning bitta sahifa yoki server operatsiyalari mavjud bo'lsa, siz buning o'rniga getDataSource() dan foydalanishingiz mumkin. misol uchun: var allGridData = $ ("# yourGridId") dxDataGrid ("instance").
qo'shib qo'ydi muallif Mostafa Razavi, manba

har bir ustun uchun cellTemplate dan foydalanishingiz mumkin, va yashirin kiritishni ishlatishingiz kerak. Masalan, ushbu kodni nazarda tuting:

factory.Add().DataField("Mobile")
             .CellTemplate(@
              <%= text %>
              <input type='hidden' name='Addresses[<%= rowIndex %>].Mobile' value='<%= value %>' />
              );

text,rowIndex,value is DevExtreme object. for more info please check the cellInfo section of link. https://js.devexpress.com/Documentation/ApiReference/UI_Widgets/dxDataGrid/Configuration/columns/?search=columns

2
qo'shib qo'ydi
Iltimos, linklar atrofidagi ba'zi kontekstni qo'shing, tegishli tarkibiy qismlarni nusxa oling va sayt mazmuni o'zgartirilsa yoki mavjud bo'lmasa, ularni yonida joylashtiring.
qo'shib qo'ydi muallif LW001, manba
Salom Mustafo, rahmat. Mening stsenariyim bir oz boshqacha: Tanlangan qatorlarni faqat mahalliy ma'lumotlarga bog'langan TreeList tekshiruvida yozmoqchiman.
qo'shib qo'ydi muallif Sven, manba
Bu hali hammasi hal qilinganmi?
qo'shib qo'ydi muallif Sven, manba
@Sizda gridning bitta sahifa yoki server operatsiyalari mavjud bo'lsa, siz buning o'rniga getDataSource() dan foydalanishingiz mumkin. misol uchun: var allGridData = $ ("# yourGridId") dxDataGrid ("instance").
qo'shib qo'ydi muallif Mostafa Razavi, manba

Mening savolim uchun yo'lni topdim. Bu erda hal qilish. https://www.devexpress.com/Support/Center/Question/Details/ T489645 rivojlangan qo'llab-quvvatlash tufayli.

1
qo'shib qo'ydi
"Siz ushbu chiptani ko'rolmaysiz, agar bu sizning biletingiz bo'lsa, kiring." Agar siz sahifadagi sahifaga kirish imkoni bo'lmaganda, sizning javobingizdagi matnni taklif qilishingiz va uni ko'rsatishingiz yaxshiroqdir.
qo'shib qo'ydi muallif Eric Eskildsen, manba

Mening savolim uchun yo'lni topdim. Bu erda hal qilish. https://www.devexpress.com/Support/Center/Question/Details/ T489645 rivojlangan qo'llab-quvvatlash tufayli.

1
qo'shib qo'ydi
"Siz ushbu chiptani ko'rolmaysiz, agar bu sizning biletingiz bo'lsa, kiring." Agar siz sahifadagi sahifaga kirish imkoni bo'lmaganda, sizning javobingizdagi matnni taklif qilishingiz va uni ko'rsatishingiz yaxshiroqdir.
qo'shib qo'ydi muallif Eric Eskildsen, manba