检测在radgrid中创建新记录时是否存在项目

时间:2013-09-10 19:39:36

标签: c# asp.net

每次创建新项目时,我都会在此代码中收到错误消息。 第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....

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

1 个答案:

答案 0 :(得分:1)

使用GridTableView.DataKeyNames

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

来自Telerik的docs,在GridEditableItem.GetDataKeyValue下注明:

  

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