在模板列里不加编辑列一切正常,现我要编辑这个模板列,在模板列的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: 未将对象引用设置到对象的实例。
<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: 未将对象引用设置到对象的实例。
<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;
}
}
}
}