0

我无法从 Apache-Cassandra 获取显示在 gridview 上的行键值。一些代码...

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通过CommandArgument并使用它来检索DataKey像 On the Button 这样的值:

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

关于服务器事件

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

string val = (string)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 绑定,请执行以下操作,您需要映射正确的属性以在下面的代码中设置 Key 和 Name

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 回答