问题是:我在做一个在datagrid中批量删除新闻的程序程序始终报错:"未将对象引用设置到对象的实例。"
datagrid中的代码: <asp:DataGrid ID="news" Runat=Server AutoGenerateColumns="False" Width="100%" DataKeyField="newsid">
<Columns>
<asp:TemplateColumn><footertemplate> 
  </table> 
    </footertemplate>
        <ItemTemplate>
        <tr bgcolor="#FFFFFF" height=30>
          <td style="width: 8%">
              <div align="center"><input name='gg' type='checkbox' onclick="unselectall()" id="gg" title='<%#container.dataitem("newsid")%>'></div></td>
          <td><div align="center"><%#Container.DataItem("smallclassname")%></div></td>
          <td><%#container.DataItem("title") %></td>
          <td><div align="center"><%#Container.DataItem("passed")%></div></td>
          <td><div align="center"><%#Container.DataItem("tm")%></div></td>
          <td><div align="center"><div align="center">
             修改 | <a href="?types=del&id=<%# container.dataitem("newsid") %>" onClick="javascript:if(confirm('您确认此操作吗?')){return true;}else{return false;}">删除</a> </div></td>
          <td><div align="center">查看</div></td>
        </tr>
        </ItemTemplate>
<HeaderTemplate>
    <table width="100%"  border="0" cellpadding="1" cellspacing="1" bgcolor=#EBAF56>
        <tr bgcolor=maroon height=30>
          <td style="width: 8%"><div align="center" class="style5">选择</div></td>
          <td width="10%"><div align="center" class="style5">所属类别</div></td>
          <td width="40%"><div align="center" class="style5">新闻标题</div></td>
          <td width="6%"><div align="center" class="style5">审核状态</div></td>
          <td width="18%"><div align="center" class="style5">发布日期</div></td>
          <td width="9%"><div align="center" class="style5">操作</div></td>
          <td width="9%"><div align="center" class="style5">查看</div></td>
        </tr>
        </HeaderTemplate>
      </asp:TemplateColumn>
      </Columns>
      </asp:DataGrid> <asp:Button ID="Button1" Runat="server" Text="删除选定产品" OnClick="Button1_Click" />外部点击删除时的按钮命令:
Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim sqlstr As String
        Dim newsid2 As DataGridItem
        Dim chk As CheckBox
        For Each newsid2 In news.Controls(0).Controls
            chk = newsid2.FindControl("gg")
            If chk.Checked Then
                Response.Write(chk.Text)
                Response.End()
            End If
        Next
    End Sub报错地点: If chk.Checked Then
显示错误是: 未将对象引用设置到对象的实例。

解决方案 »

  1.   

    vb中偶不知道,c#中要把findcontrol找到的东西强制转换一下(CheckBox)newsid2.FindControl("gg"),不知vb.net中是否有这么一说
      

  2.   

    <input name='gg' type='checkbox' onclick="unselectall()" id="gg" title='<%#container.dataitem("newsid")%>'>是不是应该加上runat=server
      

  3.   

    <div align="center"><input name='gg' type='checkbox' onclick="unselectall()" id="gg" title='<%#container.dataitem("newsid")%>'></div>
    没加runat="server"属性,服务端能读出就奇怪了!!
      

  4.   

    不是 runat=server的原因我刚试了不行,各位大哥再忙看一下吧?
      

  5.   

    .
    .
    .
    <input name='gg' type='checkbox' onclick="unselectall()" id="gg" title='<%#container.dataitem("newsid")%>' runat="Server">
    .
    .
    .
    chk = Ctype(newsid2.FindControl("gg"),CheckBox)
    .
    .
    .