在模板列里不加编辑列一切正常,现我要编辑这个模板列,在模板列的EditItemTemplate里加了一个textbox后,在后台获取不到这个模板列的值了(这个模板列是超级链接列转的),前台如下:
<asp:TemplateColumn HeaderText="文件(夹)名">
<HeaderTemplate>
<FONT face="宋体">文件(夹)名</FONT>
</HeaderTemplate>
<ItemTemplate>
<asp:HyperLink id=FloderName runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Folder_Name") %>' NavigateUrl='<%# DataBinder.Eval(Container, "DataItem.Folder_ID", "main.aspx?id={0}") %>'>
</asp:HyperLink>
</ItemTemplate>
                                                       就是加了下面这个后就获取不到上面的FloderName 的值了。
<EditItemTemplate>
<asp:TextBox id="txtEditName" runat="server"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
后台如下:string name = ((HyperLink)(e.Item.Cells[1].FindControl("FloderName"))).Text ;出错信息:
“/OAsystem.Web”应用程序中的服务器错误。
--------------------------------------------------------------------------------未将对象引用设置到对象的实例。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

解决方案 »

  1.   

    string name = ((HyperLink)(e.Item.Cells[0].FindControl("FloderName"))).Text ;
      

  2.   

    string name = ((HyperLink)(e.Item.Cells[0].FindControl("FloderName"))).Text ;
      

  3.   

    控件加入DataGrid中后控件ID发生了变化,系统会在前边加上什么东西忘了 你可以单步调试然后 看看Control集合就知道了,也就是说FloderName已经不叫FloderName而是叫XXFloderName了
      

  4.   

    飞飞是个思路,我试试,to楼楼上的等,我说了,不加编辑模板是正常的,Cells[1]是没问题的。
      

  5.   

    “控件加入DataGrid中后”ID没有发生任何变化,变化的是ClientID,不要误导哦!
      

  6.   

    是的,变化的应该是ClientID,我有很多列,前面还有一列,那个Cells[1]是没问题的,我刚才也试了Cells[0],肯定是Cells[1]了,我刚才看Controls集合,怎么查不到我的超链接控件啊,也就是ID为FloderName的。
      

  7.   

    我查了Controls集合,有三个控件,我用e.Item.Cells[1].Controls[0])和e.Item.Cells[1].Controls[2])和e.Item.Cells[1].Controls[1])都试了,还是不行,用索引为1的可能绑定,但是不能编辑,一编辑又说指定的转换无效,查看1则是编辑列的textbox,显然我要编辑不是这个。
      

  8.   

    我把代码全贴上吧,下面是DATAGRID的代码:
    <asp:datagrid id="dgShowDoc" runat="server" AutoGenerateColumns="False" Width="100%" GridLines="Horizontal"
    BorderWidth="1px" BorderColor="#AACCAA">
    <ItemStyle HorizontalAlign="Center" Height="25px"></ItemStyle>
    <HeaderStyle Font-Size="20pt" HorizontalAlign="Center" Height="27px" ForeColor="White" BackColor="#AACCAA"></HeaderStyle>
    <Columns>
    <asp:TemplateColumn HeaderText="类型">
    <ItemTemplate>
    <asp:Image id="ImgSortFold" runat="server" Visible="False" ImageUrl="images_sort/fold.gif"></asp:Image>
    <asp:Image id="ImgSortAccess" runat="server" Visible="False" ImageUrl="images_sort/access.gif"></asp:Image>
    <asp:Image id="ImgSortExel" runat="server" Visible="False" ImageUrl="images_sort/excel.gif"></asp:Image>
    <asp:Image id="ImgSortMp3" runat="server" Visible="False" ImageUrl="images_sort/media.gif"></asp:Image>
    <asp:Image id="ImgSortPdf" runat="server" Visible="False" ImageUrl="images_sort/pdf.gif"></asp:Image>
    <asp:Image id="ImgSortMail" runat="server" Visible="False" ImageUrl="images_sort/sealed.gif"></asp:Image>
    <asp:Image id="ImgSortAdd" runat="server" Visible="False" ImageUrl="images_sort/address.gif"></asp:Image>
    <asp:Image id="ImgSortHtml" runat="server" Visible="False" ImageUrl="images_sort/htm.gif"></asp:Image>
    <asp:Image id="ImgSortNote" runat="server" Visible="False" ImageUrl="images_sort/note.gif"></asp:Image>
    <asp:Image id="ImgSortWord" runat="server" Visible="False" ImageUrl="images_sort/word.gif"></asp:Image>
    <asp:Image id="ImgSortPpt" runat="server" Visible="False" ImageUrl="images_sort/ppt.gif"></asp:Image>
    <asp:Image id="ImgSortRar" runat="server" Visible="False" ImageUrl="images_sort/rar.gif"></asp:Image>
    </ItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="文件(夹)名">
    <HeaderTemplate>
    <FONT face="宋体">文件(夹)名</FONT>
    </HeaderTemplate>
    <ItemTemplate>
    <asp:HyperLink id=FloderName runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Folder_Name") %>' NavigateUrl='<%# DataBinder.Eval(Container, "DataItem.Folder_ID", "main.aspx?id={0}") %>'>
    </asp:HyperLink>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:TextBox id="txtEditName" runat="server"></asp:TextBox>
    </EditItemTemplate>
    </asp:TemplateColumn>
    <asp:BoundColumn DataField="Folder_Author" HeaderText="管理员"></asp:BoundColumn>
    <asp:BoundColumn DataField="Folder_Time" ReadOnly="True" HeaderText="创建时间" DataFormatString="{0:D}"></asp:BoundColumn>
    <asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" HeaderText="修改" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>
    <asp:ButtonColumn Text="删除" HeaderText="操作" CommandName="Delete"></asp:ButtonColumn>
    <asp:BoundColumn Visible="False" DataField="Folder_ID"></asp:BoundColumn>
    </Columns>
    </asp:datagrid>下面是后台代码:
    private void dgShowDoc_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {

    if(e.Item.ItemType==ListItemType.AlternatingItem||e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.EditItem)
    {
    e.Item.Cells[5].Attributes.Add("onclick","javascript:return confirm('警告,你确定要删除文件夹及所有子文件夹和文件?')");
                                         出错的就是下面这一行,就对象未引用到实列
    string name = ((HyperLink)(e.Item.Cells[1].FindControl("FloderName"))).Text ;
    if(name.IndexOf(".")!=-1)
    {
    ((HyperLink)(e.Item.Cells[1].FindControl("FloderName"))).NavigateUrl="upfile/"+name;
    }
    int nameType = name.LastIndexOf(@".");
    string FileType; 
    if(nameType==-1)
    {
    e.Item.Cells[0].FindControl("ImgSortFold").Visible=true;
    }
    else
    {
    FileType = (name.Substring(name.LastIndexOf(@"."))).ToLower();
    if(FileType==".doc")
    {
    e.Item.Cells[0].FindControl("ImgSortWord").Visible=true;
    }
    if(FileType==".xls")
    {
    e.Item.Cells[0].FindControl("ImgSortExel").Visible=true;
    }
    if(FileType==".mdb")
    {
    e.Item.Cells[0].FindControl("ImgSortAccess").Visible=true;
    }
    if(FileType==".mp3")
    {
    e.Item.Cells[0].FindControl("ImgSortMp3").Visible=true;
    }
    if(FileType==".mail")
    {
    e.Item.Cells[0].FindControl("ImgSortMail").Visible=true;
    }
    if(FileType==".csv")
    {
    e.Item.Cells[0].FindControl("ImgSortAdd").Visible=true;
    }
    if(FileType==".htm"||FileType==".html")
    {
    e.Item.Cells[0].FindControl("ImgSortHtml").Visible=true;
    }
    if(FileType==".txt")
    {
    e.Item.Cells[0].FindControl("ImgSortNote").Visible=true;
    }
    if(FileType==".ppt")
    {
    e.Item.Cells[0].FindControl("ImgSortPpt").Visible=true;
    }
    if(FileType==".pdf")
    {
    e.Item.Cells[0].FindControl("ImgSortPdf").Visible=true;
    }
    if(FileType==".rar"||FileType==".zip")
    {
    e.Item.Cells[0].FindControl("ImgSortRar").Visible=true;
    }

    }
    }
    }