0

每次创建新项目时,此代码都会出现错误。第 4 行的“参数超出范围异常”。

protected void RadGrid1_ItemCreated(object sender, GridItemEventArgs e)
{
    if (e.Item is GridEditableItem && e.Item.IsInEditMode)
    {
        GridEditableItem editedItem = e.Item as GridEditableItem;
        string recordIDcreateDir = editedItem.GetDataKeyValue("TransazioneID").ToString();
        string subPath = "Allegati\\" + recordIDcreateDir; 
        bool isExists = System.IO.Directory.Exists(Server.MapPath(subPath));
        if (!isExists)
            System.IO.Directory.CreateDirectory(Server.MapPath(subPath));
........

显然,在创建新记录时,“TransazioneID”值还不存在,这就是我收到错误的原因。但是我怎样才能通过 if 语句使其以记录的存在为条件。我试过

 if(editedItem.GetDataKeyValue("TransazioneID").ToString()== null);
and....
 if(editedItem.GetDataKeyValue("TransazioneID")!= null); and several others....

但没有任何成功。如何在该语句中捕获某些内容以避免在项目创建时执行这些行?

4

1 回答 1

1

使用GridTableView.DataKeyNames

if (editedItem.OwnerTableView.DataKeyNames.Contains("TransazioneID")) { ... }

来自 Telerik 的文档,注释GridEditableItem.GetDataKeyValue如下:

从所有者 GridTableView 中获取 DataKeyValues 以及相应的项 ItemIndex 和 keyName。keyName 应该是 DataKeyNames 数组中指定的值之一

于 2013-09-10T20:23:07.753 回答