因此,我有一個GridView
基於數據庫數據與CheckBox column
在一個asp.net網站。 用戶可以檢查checkbox
,然後我將更改保存到數據庫。在IIS上運行asp.net gridview null
本地一切都很好。但是,當我將網站發佈到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。
我的代碼:
GridView控件:
<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
}
}
}
任何一個? 在此先感謝:)
你能分享你的代碼,所以我們可以看到問題出在哪裏? – Mert
你是否更新過Web.Config中的SQL連接字符串? (如果你有)。 – Dan
您的活動查看器中是否顯示任何錯誤?在IIS上啓用了所有功能?通過Visual Studio運行時,IIS Express(VS使用的)的配置與常規IIS不同。你的web.config是否指向正確的位置? – user1666620