asp.net 在 IIS 上 运行 时 gridview 为空

asp.net gridview null when running on IIS

因此,我在 asp.net 网站中有一个基于数据库数据的 GridViewCheckBox column。 用户可以检查 checkbox,然后我将更改保存到数据库。

本地一切正常。但是,当我将网站发布到 IIS 服务器时——这就是问题开始的时候——在事件查看器中,当用户尝试保存他的更改时,我不断收到以下异常:Index was out of range. Must be non-negative and less than the size of the collection.Parameter name: index 这意味着在尝试保存时 gridview 是空的。 现在,我读了一点,显然在 PostBackGridView DataSource 没有保持他的价值观。那么当我在本地 运行 网站时,它怎么能完美运行呢?不仅如此——我在网上看到很多例子都做同样的事情并且对他们有用,例如gridView with checkBox.

我的代码:

网格视图:

<asp:GridView runat="server" ID="grdDataBuffer" Visible="true" >
  <Columns>
   <asp:TemplateField>
   <ItemTemplate>
   <asp:CheckBox ID="CheckBoxColumnDb" runat="server" HeaderText="check" ReadOnly="True"/>
   </ItemTemplate>
   </asp:TemplateField>
 </Columns>
</asp:GridView>

保存按钮:

 <asp:Button ID="btnUpdate" class="Common_Button" runat="server" Text="update" OnClick="btnUpdate_Click" Visible="false"/>

后面的代码:

protected void Page_Load(object sender, EventArgs e)
{   if (!IsPostBack)
    {
        grdDataBuffer.DataSource = null;
        grdDataBuffer.DataBind();
        dv = BL.Process_BL.GetInfo;
        grdDataBuffer.DataSource = dv;
        grdDataBuffer.DataBind();
     }
 }

protected void btnUpdate_Click(object sender, EventArgs e)
{
    //ON IIS SERVER  grdDataBuffer.Rows.Count = 0- ALWAYS!
    for (int i = 0; i < grdDataBuffer.Rows.Count; i++) 
    {
        CheckBox chk =(CheckBox)grdDataBuffer.Rows[i].Cells[0].Controls[1];
        if (chk.Checked == true)
        {
           //does the whole logic and saves it
        }
    }
}

有人吗? 提前致谢:)

所以 - 有史以来最奇怪的事情 - 我重新创建了 asp 页面,其中包含所有控件和代码,一切正常 - 我猜是旧页面设计器中的某些东西堆积起来,把整个事情搞砸了向上..

我不知道它是否对任何人有帮助 - 但有时当本应有效的东西 - 不起作用时 - 也许值得检查一下设计器中的某些内容是否发生了变化。