0

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)
     }
})

私の問題は、sqlデータベースを更新するために列電話からすべての値を取得する方法です。ある種の配列を使用しますか、それともデータベースに保存する列「phone」のすべての値を取得する方法がありますか

4

2 に答える 2

2

あなたはそれを間違った方法でやっています。まず、モデルに対して常に1つの[idProperty][1]プロパティが必要であり、常にモデルを使用する必要があります。モデルを定義しない場合、ストアは暗黙的なモデルを使用し、定義していない場合はidProperty、デフォルトで「id」になります。

ここで、これがすべて揃っていると仮定します。 次に、ストアにバインドされている(ストアに追加またはロードされている)そのタイプのモデルインスタンス(レコード)を追加または編集すると、変更された(フィールドがダーティな)すべてのモデルを送信できます。またはsync()、ストアに電話して新しい(ファントム) 。プロキシには、このための適切なライターが必要です。この場合[allowSingle][2]、falseに設定して書き込みを構成し、ライターが常にレコードの配列(リスト)をサーバーに返送するように強制できます。そうしないと、コントローラーでの逆シリアル化エラーに苦労する可能性があります。

電話番号を送信するだけの場合、あなたのケースは少し珍しい原因に聞こえます。どの電話番号が誰のものかをどうやって知ることができますか?とにかく、上記のようにそれを行う場合、あなたはそれを正しい方法で持っていて、あなたはまだあなたがサーバー上でどのフィールドを取るかを決めることができます。

:モデルでプロキシを定義する場合、ストアで同じプロキシを再度定義する必要はありません。

アップデート

1つのフィールドタイプだけをフェッチして送信するには、次のことができます(テストされていません)

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

詳細については、収集リクエストを参照してください

于 2013-02-01T07:08:55.380 に答える
0
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());
    }
于 2022-01-20T20:43:03.700 に答える