Bolik‘s AIO Blog
All In One Team Blog
posts - 65,  comments - 125,  trackbacks - 0

最近在使用 CSS Control Adapter Toolkit Update 时发现

    GridView中的Column Visible=false时仍然有显示 DetailsView仍然有该问题存在修改代码如下:

修改GridViewAdapter的WriteRows方法

 

private void WriteRows(HtmlTextWriter writer, GridView gridView, GridViewRowCollection rows, string tableSection)
    {
     if (rows.Count > 0)
     {
        writer.WriteLine();
        writer.WriteBeginTag(tableSection);
        writer.Write(HtmlTextWriter.TagRightChar);
        writer.Indent++;
        foreach (GridViewRow row in rows)
        {
         writer.WriteLine();
         writer.WriteBeginTag("tr");
         string className = GetRowClass(gridView, row);
         if (className.Length > 0)
         {
            writer.WriteAttribute("class", className);
         }
         writer.Write(HtmlTextWriter.TagRightChar);
         writer.Indent++;
         //---------- Bolik Fixed for not Visible Columns
         //foreach (TableCell cell in row.Cells)
         //{
         // writer.WriteLine();
         // cell.RenderControl(writer);
         //}            
         for (int i = 0; i < row.Cells.Count; i++)
         {
            if (gridView.Columns[i].Visible)
            {
             writer.WriteLine();
             row.Cells[i].RenderControl(writer);
            }
         }
         //---------- Bolik Fixed for not Visible Columns
         writer.Indent--;
         writer.WriteLine();
         writer.WriteEndTag("tr");
        }
        writer.Indent--;
        writer.WriteLine();
        writer.WriteEndTag(tableSection);
     }
    }

 

修改DetailsViewAdapter的BuildItem方法

 

protected override void BuildItem(HtmlTextWriter writer)
    {
     if (IsDetailsView && (ControlAsDetailsView.Rows.Count > 0))
     {
        writer.WriteLine();
        writer.WriteBeginTag("div");
        writer.WriteAttribute("class", _classData);
        writer.Write(HtmlTextWriter.TagRightChar);
        writer.Indent++;
        writer.WriteLine();
        writer.WriteBeginTag("ul");
        writer.Write(HtmlTextWriter.TagRightChar);
        writer.Indent++;
        //---------- Bolik Fixed for not Visible Columns
        for (int i = 0; i < ControlAsDetailsView.Rows.Count; i++)
        //foreach (DetailsViewRow row in ControlAsDetailsView.Rows)
        {
         DetailsViewRow row = ControlAsDetailsView.Rows[i];
         if ((!ControlAsDetailsView.AutoGenerateRows) &&
             ((row.RowState & DataControlRowState.Insert) == DataControlRowState.Insert) &&
             (!ControlAsDetailsView.Fields[row.RowIndex].InsertVisible))
         {
            continue;
         }            
         if (ControlAsDetailsView.Fields[i].Visible)
         {
            writer.WriteLine();
            writer.WriteBeginTag("li");
            if ((row.RowState & DataControlRowState.Alternate) == DataControlRowState.Alternate)
            {
             writer.WriteAttribute("class", "AspNet-DetailsView-Alternate");
            }
            writer.Write(HtmlTextWriter.TagRightChar);
            writer.Indent++;
            writer.WriteLine();
            for (int iCell = 0; iCell < row.Cells.Count; iCell++)
            {
             TableCell cell = row.Cells[iCell];
             writer.WriteBeginTag("span");
             if (iCell == 0)
             {
                writer.WriteAttribute("class", "AspNet-DetailsView-Name");
             }
             else if (iCell == 1)
             {
                writer.WriteAttribute("class", "AspNet-DetailsView-Value");
             }
             else
             {
                writer.WriteAttribute("class", "AspNet-DetailsView-Misc");
             }
             writer.Write(HtmlTextWriter.TagRightChar);
             if (cell.Text != null)
             {
                writer.Write(cell.Text);
             }
             foreach (Control cellChildControl in cell.Controls)
             {
                cellChildControl.RenderControl(writer);
             }
             writer.WriteEndTag("span");
            }
            writer.Indent--;
            writer.WriteLine();
            writer.WriteEndTag("li");
         }
         //---------- Bolik Fixed for not Visible Columns
        }
        writer.Indent--;
        writer.WriteLine();
        writer.WriteEndTag("ul");
        writer.Indent--;
        writer.WriteLine();
        writer.WriteEndTag("div");
     }
    }
posted on 2006-09-18 15:02 Bolik 阅读(2166) 评论(2) 编辑 收藏

FeedBack:
2006-09-19 02:43 | sherwin[未注册用户]
for (int i = 0; i < row.Cells.Count; i++)
{
if (gridView.Columns[i].Visible)
{
writer.WriteLine();
row.Cells[i].RenderControl(writer);
}
}
有一点小问题,
当你把GridView的AutoGenerateColumns设置为true时,
你会发现Columns.Length != row.Cells.Count。
于是就Exception了。

 回复 引用   
2007-02-12 14:23 | MK2      
<nb:NBearDataSource ID="nbdsLinkCategorys" runat="server" ConnectionStringName="Access"
TypeName="MK2.Community.Entities.LinkCategory" EnableViewState="true">
</nb:NBearDataSource>
<asp:DetailsView ID="DetailsView1" runat="server" DataSourceID="nbdsLinkCategorys" DefaultMode="Insert" AutoGenerateInsertButton="true" AutoGenerateRows="false">
<Fields>
<asp:BoundField DataField="Name" HeaderText="Name" />
</Fields>
</asp: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))


 回复 引用 查看   

网络有风险(我的版权声明)

该博客的任何内容都可以随意使用,就算不署名也无所谓 既然我把它贴出来就是为了与大家交流的,至于利益等等都无关紧要了 如果关联到个人或公司的切身利益的话就不要贴出来了 我们是应该要版权,但我们所学的种种知识,学校的,网络的,甚至是社会的,谁给我们要过版权呢? 中国人有一个不太好的习惯,引用从来想付出代价,不过前人就是为后人铺路的,哪管那么多 网络是不安全的,如果有外泄的风险那请缄言
昵称:Bolik
园龄:5年11个月
粉丝:3
关注:0

<2006年9月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

搜索

 
 

常用链接

最新随笔

随笔分类(85)

随笔档案(65)

文章档案(1)

相册

积分与排名

  • 积分 - 55542
  • 排名 - 1896

最新评论

阅读排行榜

评论排行榜

推荐排行榜