J'ai un contrôle HTML select
<select id="Select1" runat="server" name="D1">
<option></option>
</select>
Comment puis-je le renseigner avec les données de ma base de données SQL Server
en utilisant C#
ou JavaScript/jQuery/JSON
?
S'il vous plaît, ne postez pas de réponses sur la façon de renseigner un asp:DropDownList
car je sais déjà le faire, je dois utiliser un contrôle select
.
aspx:
<select id="Select1" runat="server" name="D1">
</select>
code derrière:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string ConnectString = "server=localhost;database=pubs;integrated security=SSPI";
string QueryString = "select * from authors";
SqlConnection myConnection = new SqlConnection(ConnectString);
SqlDataAdapter myCommand = new SqlDataAdapter(QueryString, myConnection);
DataSet ds = new DataSet();
myCommand.Fill(ds, "Authors");
Select1.DataSource = ds;
Select1.DataTextField = "au_fname";
Select1.DataValueField = "au_fname";
Select1.DataBind();
}
}
function GetItems() {
var items;
$.getJSON("/api/MethodName/" + id(Optional), function (data) {
$.each(data, function (key, val) {
items += "<option value='" + val.id+ "'>" + val.value+ "</option>";
});
var header = '<option value=\'\'>Select...</option>';
$('#Select1').html(header + items);
});
};
Vous pouvez utiliser asp.net webapi pour JSON, c'est très facile et rapide
Dans le code derrière:
string options = string.Empty;
using (SqlConnection sql_conn = new SqlConnection(ConfigurationManager.ConnectionStrings["connstr"].ToString()))
{
SqlDataAdapter sql_adapter = new SqlDataAdapter("select Value, Name from YourTable", sql_conn);
DataSet ds = new DataSet();
sql_adapter.Fill(ds, "TempTable");
foreach (DataRow row in ds.Tables["TempTable"].Rows)
{
options = "<option value='" + row["Value"] + "'>" + row["Name"] + "</option>";
}
sql_conn.Close();
return options;
}
et alors vous pouvez utiliser jquery:
$.get(url, function (data) {
$('#Select1').html(data);
});
Vous pouvez utiliser json
dans ajax, mais vous devez renvoyer un fichier json à partir du serveur à l'aide d'un service Web.
$.ajax({
url:'/path/to/webservice/method',
type:'POST',
dataType: 'json',
success: function(data){
$.each(data, function(i, item){
$('<option value="'+item.val+'">'+item.text+'</option>').appendTo('#Select1');
});
},
error: function(){
console.log('err')
}
});
Vous pouvez utiliser un répéteur
<select>
<asp:Repeater ID="Repeater1" runat ="server" DataSourceID="SqlDataSource1">
<ItemTemplate>
<option value='<%# Eval("ID")%>'> <%# Eval("ITEMNAME")%></option>
</ItemTemplate>
</asp:Repeater>
</select>
using (SqlConnection con = new SqlConnection("Data Source = [HostName]; Initial Catalog = CustomerOrders; Integrated Security = true"))
{
SqlCommand cmd = new SqlCommand("SELECT Name FROM Customer", con);
con.Open();
dropDownList.DataSource = cmd.ExecuteReader();
dropDownList.DataTextField = "Name";
dropDownList.DataValueField = "Name";
dropDownList.DataBind();
}