我想要类似于以下伪代码的东西:
myGridView.SelectedIndex = myGridView.DataKeys.IndexOf("mySpecificKey");
Run Code Online (Sandbox Code Playgroud)
我做了一些Intellisense探索,但我还没有找到一个明显的方法来做到这一点.如果找不到DataKey,我想将SelectedIndex设置为-1.
我结束了
For n As Integer = 0 To myGridView.DataKeys.Count - 1
If myGridView.DataKeys(n).Value = myKeyObj Then
myGridView.SelectedIndex = n
End If
Next
Run Code Online (Sandbox Code Playgroud)
你考虑过Linq方法吗?
用法:
GridView1.SelectedIndex = GridView1.DataKeys.IndexOf(id);
Run Code Online (Sandbox Code Playgroud)
码:
public static class WebControlsEx
{
public static int IndexOf(this DataKeyArray dataKeyArray, object value)
{
if (dataKeyArray.Count < 1) throw new InvalidOperationException("DataKeyArray contains no elements.");
var keys = dataKeyArray.Cast<DataKey>().ToList();
var key = keys.SingleOrDefault(k => k.Value.Equals(value));
if (key == null) return -1;
return keys.IndexOf(key);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
这很有效,而且很短:
int MyId = 22;
foreach (GridViewRow gvRow in gridview1.Rows)
{
if ((int)gridview1.DataKeys[gvRow.DataItemIndex].Value == MyId)
{
gridview1.SelectedIndex = gvRow.DataItemIndex;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
60544 次 |
| 最近记录: |