0

Apache-Cassandra からグリッドビューに表示される行キーの値を取得できません。コードの一部...

public class PacienteEntity
{
    public int key { get; set; }
    public string name { get; set; }
}

var records = (from x in context.ColumnList
where x.ColumnFamily == "paciente"
select x.ToObject<PacienteEntity>());

//remove null rows
var filteredRecords = records.ToList().Where(i => i != null);
dgView.DataSource = filteredRecords.ToList();
dgView.DataBind();

autoGenerateColumns を使用しても、rowkey の値は 0 です。

4

2 に答える 2

0

私は基本的にRowIndexビアを渡し、それを使用してOn the Button のような値CommandArgumentを取得します。DataKey

CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") %>'

サーバーイベントで

int rowIndex = int.Parse(e.CommandArgument.ToString());

文字列 val = (文字列)this.dgView.DataKeys[rowIndex]["myKey"];

于 2013-05-17T11:16:01.177 に答える
0

以下のようにGridviewでデータキー名を設定する必要があります

  <asp:gridview id="MyGridView" 
        datakeynames="Key"
        onselectedindexchanged="MyGridView_SelectedIndexChanged"
        runat="server">

次に、イベントで以下のようにキーを取得できます

  void MyGridView_SelectedIndexChanged(Object sender, EventArgs e)
  {
    int index = MyGridView.SelectedIndex;
    var key =MyGridView.DataKeys[index].Value.ToString();
  }

のような複数のキーがすでにある場合DataKeyNames="Key,Name"

以下のようにインデックスを指定することで、各 DataKey にアクセスできるようになりました。

string Key= MyGridView.DataKeys[index].Values[0].ToString();
string Name= MyGridView.DataKeys[index].Values[1].ToString();

DataSource バインディングについて不明な点があります。以下のようにしてください。以下のコードでキーと名前を設定するには、正しいプロパティをマップする必要があります。

var records = context.ColumnList.Where(x=> x.ColumnFamily == "paciente")
              .Select(p=> new PacienteEntity(){ Key = p.P_Key, Name =p.P_Name}).ToList();
于 2013-05-17T11:21:41.970 に答える