請考慮,我在調試模式下得到了意見值:所有的GridView行消失,而選擇行
protected void FilesGrid_SelectedIndexChanged(object sender, EventArgs e)
{
int selected = FilesGrid.SelectedIndex; // selected = 2
FilesGrid.DataBind(); //added after feedback in comments. it makes no change
int count = FilesGrid.Rows.Count; // count = 0
GridViewRow row = FilesGrid.Rows[selected]; // row = null
GridViewRow row0 = FilesGrid.Rows[0]; // row = null
}
我來到這個代碼在調查爲什麼的SelectedValue給出了在此事件處理程序爲空(在的DataKeyNames參數被確定)。
任何人都可以解釋它有可能嗎?
預先感謝您。
PS。 這裏是我的aspx代碼:
<asp:GridView ID="FilesGrid" runat="server" AutoGenerateColumns="False"
AutoGenerateSelectButton="True"
onselectedindexchanged="FilesGrid_SelectedIndexChanged"
style="margin-top: 0px" >
<Columns>
<asp:CommandField ShowDeleteButton="True" />
<asp:BoundField DataField="Name" HeaderText="Name" />
<asp:BoundField DataField="Length" DataFormatString="{0:N0}"
HeaderText="Size in Bytes" HtmlEncode="False" />
</Columns>
</asp:GridView>
這是我如何綁定數據:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
string [] dd = {"FullName"};
FilesGrid.DataKeyNames = dd;
string appPath = Request.PhysicalApplicationPath;
DirectoryInfo dirInfo = new DirectoryInfo(appPath);
FileInfo[] files = dirInfo.GetFiles();
FilesGrid.DataSource = files;
FilesGrid.DataBind(); }
}
gridview1.rows [index]返回什麼?因爲它看起來像拉着一個項目的SelectedIndex並試圖用它作爲行索引。我的猜測是你需要找到SelectedItem所在的行,併爲其分配GridViewRow row =。 – ginman
你有沒有嘗試將你的數據重新綁定到你的GridView?可能會失去所有的物品。 – euther
謝謝你的迴應。我剛剛添加了以下內容:GridViewRow row0 = FilesGrid.Rows [0]; // row = null。結果是一樣的。其實文檔說GridView.SelectedIndex:獲取或設置System.Web.UI.WebControls.GridView控件中所選行的索引。 – Kirill