を選択しながら、私はデバッグモードに入ったコメントの中の値を検討してください消える:すべての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パラメータにnullを与え、なぜ調査している間、私はこのコードに来たの確かに設定された)。
どのように可能か説明できますか?
ありがとうございます。
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
グリッドビューにデータを再バインドしてみましたか?すべてのアイテムを失う可能性があります。 – euther
ありがとうございます。私は次のように追加しました:GridViewRow row0 = FilesGrid.Rows [0]; // row = null。結果は同じです。 GridView.SelectedIndex:System.Web.UI.WebControls.GridViewコントロール内の選択した行のインデックスを取得または設定します。 – Kirill