extjs 如何从网格获取值到C#控制器

sycxhyv7  于 2022-11-04  发布在  C#
关注(0)|答案(2)|浏览(109)

我试图从我的c#控制器中的一个网格中获取值。这是我的存储和网格

Ext.create('Ext.data.Store', {
    storeId:'store',
    fields:['name', 'email', 'phone'],
    proxy: {
        type: 'memory',
        reader: {
            type: 'json',
            root: 'items'
        }
     }
});

Ext.create('Ext.grid.Panel', {
    store: Ext.data.StoreManager.lookup('store'),
    columns: [
        { text: 'Name',  dataIndex: 'name' },
        { text: 'Email', dataIndex: 'email', flex: 1 },
        { text: 'Phone', dataIndex: 'phone' }
    ],
    height: 200,
    width: 400,
    renderTo: Ext.getBody()
});

这就是我尝试将网格值传递给控制器的方式

var records = [];
this.store.data.each(function(rec) {
     records.push(rec.data);
});
Ext.Ajax.request({
     url: 'mycontroller/read_grid',
     params: {
          par1: Ext.encode(records)
     }
})

我的问题是如何从phone列中获取所有的值来更新我的sql数据库。我是否使用某种数组或是否有一种方法来获取“phone”列中的所有值以存储在数据库中

xdnvmnnf

xdnvmnnf1#

你的方法不对。首先你应该总是有一个模型的[idProperty][1]属性,并且你应该总是使用模型!现在如果你没有定义模型,商店将使用隐式模型,如果你没有定义idProperty,它将默认为'id'。

**现在让我们假设您拥有所有这些:**如果您随后添加或编辑绑定到存储区(添加或加载到存储区)的该类型的模型示例(记录),则可以通过在存储区上调用sync()来提交所有已更改(具有脏字段)或新的(为幻像)的示例。代理将需要一个适当的编写器来完成此操作。在您的情况下,可以将[allowSingle][2]设置为false来配置写入,以强制编写器始终将记录数组(列表)发送回服务器,否则您可能会在控制器上遇到反序列化错误。

你的情况听起来有点不寻常的原因,如果你只是发送电话号码,你怎么能知道哪个电话号码属于tho谁?无论如何,如果你这样做,就像上面描述的,你有它的正确方式,你仍然可以决定哪些字段,你需要在服务器上。

注意:如果在模型上定义代理,则不需要在存储上再次定义相同的代理。
更新

要只获取一个字段类型并发送它,您可以执行以下操作(未测试)

var emails = store.collect('email');
Ext.Ajax.request({
    url: 'page.php',
    jsonData: emails,
    success: function(response){
        var text = response.responseText;
        // process server response here
    }
});

有关详细信息,请参阅收集&请求

kq4fsx7k

kq4fsx7k2#

public class UserController : ControllerBase
{
    private DemoDbContext _dbContext;

    public UserController(DemoDbContext dbContext)
    {
        _dbContext = dbContext;
    }

    [HttpGet("GetUsers")]
    public IActionResult Get()
    {
        var users = _dbContext.demodb.ToList();
        return Ok(users);
    }

    [HttpPost("CreateUser")]
    public IActionResult Create([FromBody] UserRequest request)
    {
        tblDemodb user = new tblDemodb();
        user.UserName = request.UserName;
        user.FirstName = request.FirstName;
        user.LastName = request.LastName;
        user.City = request.City;
        user.State = request.Country;
        user.Country = request.State;
        _dbContext.demodb.Add(user);
        _dbContext.SaveChanges();
        return Ok();
    }

    [HttpPut("UpdateUser")]
    public IActionResult Update([FromBody] UserRequest request)
    {
        var user = _dbContext.demodb.FirstOrDefault(x => x.Id == request.Id);
        user.UserName = request.UserName;
        user.FirstName = request.FirstName;
        user.LastName = request.LastName;
        user.City = request.City;
        user.State = request.Country;
        user.Country = request.State;
        _dbContext.Entry(user).State = EntityState.Modified;
        _dbContext.SaveChanges();
        return Ok(_dbContext.demodb.ToList());
    }

相关问题