0
グリッドビューで「もっと見る」ボタンをクリックすると、彼はdetailView1をクリックした行ボタンのすべての列を取得します。どこが間違っているのか分かりません。私はC#asp.netに取り組んで 誰も助けることができますか?前もって感謝します。オブジェクト参照がオブジェクトのインスタンスに設定されていません。グリッドビュー上でクリックした行ボタンのすべての列を選択したい
protected void Page_Load(object sender, EventArgs e)
{
var conString = ConfigurationManager.ConnectionStrings["CONSTRING"].ConnectionString;
SqlConnection con = new SqlConnection(conString);
DetailsView1.Visible = false;
SqlCommand cmd1 = new SqlCommand("SELECT cars.carid, cars.make, cars.model, cars.condition, cars.amount, img.img FROM cars INNER JOIN img ON cars.carid = img.carid ", con);
SqlDataAdapter sda1 = new SqlDataAdapter(cmd1);
DataTable dt = new DataTable();
sda1.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();
}
protected void Button2_Clicked(object sender, EventArgs e)
{
var conString = ConfigurationManager.ConnectionStrings["CONSTRING"].ConnectionString;
SqlConnection con = new SqlConnection(conString);
foreach (GridViewRow row in this.GridView1.Rows)
{
Label lblshow = (Label)GridView1.Rows[row.RowIndex].FindControl("carid");
SqlCommand cmd1 = new SqlCommand("Select * from cars where carid='" + lblshow.Text + "'", con);
SqlDataAdapter sda1 = new SqlDataAdapter(cmd1);
DataTable dt = new DataTable();
sda1.Fill(dt);
DetailsView1.DataSource = dt;
DetailsView1.DataBind();
}
}
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="True" Width="1000px" AllowPaging="True" PageSize="8" CssClass="Grid" AlternatingRowStyle-CssClass="alt" PagerStyle-CssClass="pgr">
<AlternatingRowStyle CssClass="alt"></AlternatingRowStyle><PagerStyle CssClass="pgr"></PagerStyle>
<Columns>
<asp:TemplateField>
<HeaderTemplate>Select</HeaderTemplate>
<ItemTemplate>
<asp:Button runat="server" Text="See more" OnClick="Button2_Clicked" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>Image</HeaderTemplate>
<ItemTemplate>
<img src='data:image/jpg;base64,<%# Eval("img") != System.DBNull.Value ? Convert.ToBase64String((byte[])Eval("img")) : string.Empty %>' alt="image" height="100" width="150"/>
</ItemTemplate>
</asp:TemplateField>
</Columns>