2017-04-11 9 views
0

私はいくつかのチェックボックス& texboxesを持つasp.net webformを持っています。そして、送信時にデータはSQLサーバに保存されます。どのようにしてデータベースからフォームを事前入力するためにgridviewのhtml列を取得できますか?

フォームからのデータで構成されるグリッドビューで構成される別個のウェブフォームがあります。

グリッドビューに追加の列を追加して、データを再ロードして、送信されたデータをデータベースに基づいてフォームに挿入する各レコードに対してhtmlリンクを追加したいとします。

ASP.NET:

<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" DataSourceID="GridDataSource"> 
    <Columns> 
     <asp:BoundField DataField="SiteID" HeaderText="ID"></asp:BoundField> 
     <asp:BoundField DataField="Name" HeaderText="Name"></asp:BoundField> 
     <asp:BoundField DataField="Date" HeaderText="Date"></asp:BoundField> 
    </Columns> 
</asp:GridView> 

私は以下の私のデータベースからフォームのチェックボックスを移入することができ、コードを作業しています

C#分離コード:

SqlCommand cmd = null; 
string conn = ConfigurationManager.ConnectionStrings["constr"].ConnectionString; 
string queryString = @"SELECT AA, BB, CC FROM Test " + 
    "WHERE SITE_ID = @SiteID"; 

using (SqlConnection connection = new SqlConnection(conn)) 
{ 
    SqlCommand command = new SqlCommand(queryString, connection); 
    connection.Open(); 
    cmd = new SqlCommand(queryString); 
    cmd.Connection = connection; 

    cmd.Parameters.Add(new SqlParameter("@SiteID", //the name of the parameter to map 
      System.Data.SqlDbType.NVarChar, //SqlDbType value 
      20, //The width of the parameter 
      "SITE_ID")); //The name of the column source 
    //Fill the parameter with the value retrieved 
    //from the text field 
    cmd.Parameters["@SiteID"].Value = 500; 

    SqlDataReader reader = cmd.ExecuteReader(); 
    while (reader.Read()) 
    { 
     CheckBox1.Checked = (reader.GetBoolean(reader.GetOrdinal("AA"))); 
     CheckBox2.Checked = (reader.GetBoolean(reader.GetOrdinal("BB"))); 
     CheckBox3.Checked = (reader.GetBoolean(reader.GetOrdinal("CC"))); 
    } 
} 

私の問題は、あなたができるようですコードでは、それはSiteID = 500からの値だけを返すということです.html列でSiteIDを各レコードに関連づけて、リンクをクリックするとフォームを開きますそのSiteIDからのデータが入力されます。これは可能ですか?私はここで理にかなっていると思う。

答えて

1

TemplateFieldを使用してこれを行うことができます。それが同じページ上にある場合、そのテンプレートでは、提案VDWWDの正しいSiteID

<Columns> 
    <asp:TemplateField HeaderText="Link"> 
     <ItemTemplate> 
      <a href="/Details?SiteID=<%# Eval("SiteID") %>">Click here</a> 

      <asp:LinkButton ID="LinkButton1" runat="server" OnCommand="LinkButton1_Command" CommandArgument='<%# Eval("SiteID") %>'>Click here</asp:LinkButton> 
     </ItemTemplate> 
    </asp:TemplateField> 
</Columns> 
+0

おかげで、ボタンを詳細ページへのリンクを作成する、またはすることができます。今私は別の問題があるようです。リンクをクリックすると、アドレスバーに表示されますが、変更は行われません。私はそれが私のコードビハインドのこの行のためだと確信しています:cmd.Parameters ["@ SiteID"]。値= 500;これを何に変更すればよいですか? –

+0

私はそれを理解しました。私は文字列を追加する必要がありました。SiteID = Request.QueryString ["SiteID"];また、SiteIDに500を変更する必要がありました。 –

関連する問題