asp.net 在 IIS 上 运行 时 gridview 为空
asp.net gridview null when running on IIS
因此,我在 asp.net 网站中有一个基于数据库数据的 GridView
和 CheckBox column
。
用户可以检查 checkbox
,然后我将更改保存到数据库。
本地一切正常。但是,当我将网站发布到 IIS 服务器时——这就是问题开始的时候——在事件查看器中,当用户尝试保存他的更改时,我不断收到以下异常:Index was out of range. Must be non-negative and less than the size of the collection.Parameter name: index
这意味着在尝试保存时 gridview 是空的。
现在,我读了一点,显然在 PostBack
中 GridView 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 页面,其中包含所有控件和代码,一切正常 - 我猜是旧页面设计器中的某些东西堆积起来,把整个事情搞砸了向上..
我不知道它是否对任何人有帮助 - 但有时当本应有效的东西 - 不起作用时 - 也许值得检查一下设计器中的某些内容是否发生了变化。
因此,我在 asp.net 网站中有一个基于数据库数据的 GridView
和 CheckBox column
。
用户可以检查 checkbox
,然后我将更改保存到数据库。
本地一切正常。但是,当我将网站发布到 IIS 服务器时——这就是问题开始的时候——在事件查看器中,当用户尝试保存他的更改时,我不断收到以下异常:Index was out of range. Must be non-negative and less than the size of the collection.Parameter name: index
这意味着在尝试保存时 gridview 是空的。
现在,我读了一点,显然在 PostBack
中 GridView 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 页面,其中包含所有控件和代码,一切正常 - 我猜是旧页面设计器中的某些东西堆积起来,把整个事情搞砸了向上..
我不知道它是否对任何人有帮助 - 但有时当本应有效的东西 - 不起作用时 - 也许值得检查一下设计器中的某些内容是否发生了变化。