CSS Friendly 中的DetailsView的问题

实现NBearDataSource控件 - 02-11 20:30 修订 - 新增Master/Detail实体CRUD示例 介绍了基于NBearDataSource的Master/Detail实体CRUD示例

若使用CSS Friendly ASP.NET 2.0 Control Adapters 1.0 的,如下代码

1<nb:NBearDataSource ID="nbdsLinkCategorys" runat="server" ConnectionStringName="Access"
2        TypeName="MK2.Community.Entities.LinkCategory" EnableViewState="true">
3        </nb:NBearDataSource>
4        <asp:DetailsView ID="DetailsView1" runat="server" DataSourceID="nbdsLinkCategorys" DefaultMode="Insert"
5         AutoGenerateInsertButton="true" AutoGenerateRows="false">
6            <Fields>
7                <asp:BoundField DataField="Name" HeaderText="Name" />
8            </Fields>
9        </asp:DetailsView>

只要将DetailsView设置属性DefaultMode="Insert" AutoGenerateInsertButton="true" AutoGenerateRows="false"
就会出现异常:

索引超出范围。必须为非负值并小于集合大小。
参数名: index

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: index

源错误:
行 57:                     {
            行 58:                         DetailsViewRow row = ControlAsDetailsView.Rows[iRow];
            行 59:                         if ((!ControlAsDetailsView.AutoGenerateRows) &&
            行 60:                             ((row.RowState & DataControlRowState.Insert) == DataControlRowState.Insert) &&
            行 61:                             (!ControlAsDetailsView.Fields[row.RowIndex].InsertVisible))


源文件: XXXXX\WebSite\App_Code\Adapters\DetailsViewAdapter.cs    行: 59



我将源代码修改了一下,这样可以工作了
 1DetailsViewRow row = ControlAsDetailsView.Rows[iRow];
 2                        //if ((!ControlAsDetailsView.AutoGenerateRows) &&
 3                        //    ((row.RowState & DataControlRowState.Insert) == DataControlRowState.Insert) &&
 4                        //    (!ControlAsDetailsView.Fields[row.RowIndex].InsertVisible))
 5                        //{
 6                        //    continue;
 7                        //}
 8
 9                        //Fix by MK2
10                        if ((!ControlAsDetailsView.AutoGenerateRows) &&
11                            ((row.RowState & DataControlRowState.Insert) == DataControlRowState.Insert))
12                        {
13                            if ((iRow < ControlAsDetailsView.Fields.Count) && 
14                                (!ControlAsDetailsView.Fields[row.RowIndex].InsertVisible))
15                            {
16                                continue;
17                            }

18                        }

19                        //Fix over
posted @ 2007-02-12 14:55 MK2 阅读(97) 评论(0)  编辑 收藏 网摘 所属分类: 1 .NET 2.0/1.1 & 3.XC Web Design&W3C

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-02-21 13:00 编辑过
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索


相关链接: