【发布时间】:2016-08-09 20:40:00
【问题描述】:
employees.aspx.cs 中的 getEditData 方法:
[System.Web.Services.WebMethod]
public static string getEditData(int id)
{
Employe e = new Employe();
try
{
using (SqlConnection openCon = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["MyDBConnection"].ConnectionString))
{
string saveStaff = "SELECT * FROM employes WHERE id=@id";
using (SqlCommand querySaveStaff = new SqlCommand(saveStaff))
{
querySaveStaff.Connection = openCon;
querySaveStaff.Parameters.Add("@id", SqlDbType.Int).Value = id;
openCon.Open();
using (SqlDataReader reader = querySaveStaff.ExecuteReader())
{
// Check is the reader has any rows at all before starting to read.
if (reader.HasRows)
{
// Read advances to the next row.
while (reader.Read())
{
e.id = reader.GetInt32(reader.GetOrdinal("id"));
e.prenom = reader.GetString(reader.GetOrdinal("prenom"));
e.nom = reader.GetString(reader.GetOrdinal("nom"));
e.imei = reader.GetString(reader.GetOrdinal("phone_IMEI"));
e.sexe = reader.GetString(reader.GetOrdinal("sexe"));
e.tel = reader.GetString(reader.GetOrdinal("tel"));
e.comment = reader.GetString(reader.GetOrdinal("comment"));
}
}
}
openCon.Close();
}
}
}
catch (Exception ex) { }
JavaScriptSerializer js = new JavaScriptSerializer();
return js.Serialize(e);
}
函数JS/AJAX:
function openEdit(id) {
$.ajax({
type: "POST",
url: "employes.aspx/getEditData",
data: '{ id: ' + id + ' }',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
var parsedData = JSON.parse(data.d);
console.log(parsedData);
$("#idEdit").val(parsedData.id);
$("#prenomEdit").val(parsedData.prenom);
$("#nomEdit").val(parsedData.nom);
$("#imeiEdit").val(parsedData.imei);
$("#sexeEdit").val(parsedData.sexe);
$("#telEdit").val(parsedData.tel);
$("#commentEdit").val(parsedData.comment);
},
error: function (data) { console.log("error"); }
});
$("#myModalEdit").modal('toggle');
}
console.log(parsedData)的结果;对于 4 行:
对象 { id: 39, prenom: "ayoub", nom: "laazazi", imei: "35blabla..227", sexe: "male", tel: "06blabla..4", comment: "meme" }
Object { id: 40, prenom: "admin", nom: "admin", imei: "744444", sexe: "male", tel: null, comment: null }
Object { id: 53, prenom: "lawl", nom: "k", imei: "555", sexe: "female", tel: null, comment: null }
Object { id: 54, prenom: "gfd235", nom: "sdfgh2", imei: null, sexe: null, tel: null, comment: null } //这里的问题sexe不应该是NULL,因为SQL服务器图像说。
我在模态选择中得到什么(PS:选择值是:男性和女性):
2 examples of the Modals image
SQL Server 中的 [employe] 表:
openEdit(id) 按钮:
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Timer ID="Timer1" runat="server" Interval="600000" ontick="Timer1_Tick"></asp:Timer>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:MyDBConnection %>"
SelectCommand="SELECT * FROM [employes]"></asp:SqlDataSource>
<div id="info"></div>
<!-- Data Display DIV -->
<div id="viewdata" class="overflowTable">
<asp:repeater id="Repeater1" datasourceid="SqlDataSource1" runat="server">
<HeaderTemplate>
<table class="table table-bordered table-hover table-colored results">
<thead>
<tr>
<th>Nom</th>
<th>Sexe</th>
<th>Code IMEI</th>
<th>Commentaire</th>
<th>Action</th>
</tr>
</thead>
<tbody id="myTbody">
</HeaderTemplate>
<ItemTemplate>
<tr>
<td onclick="selectRow(this)" class="restd"><%# generateName(Eval("prenom"), Eval("nom"))%></td>
<td onclick="selectRow(this)" class="restd"><%# checkNull(Eval("sexe").ToString())%></td>
<td onclick="selectRow(this)" class="restd"><%# checkNull(Eval("phone_IMEI").ToString()) %></td>
<td onclick="selectRow(this)" class="restd"><%# checkNull(Eval("comment").ToString())%></td>
<td>
<asp:LinkButton class="btn btn-success btn-sm" title="Modifier un client" onclick="openEdit(<%# Eval("id") %>)"><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span></asp:LinkButton>
<!-- this is the button that opens the modal -->
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</tbody>
</table>
</FooterTemplate>
</asp:repeater>
</div>
</ContentTemplate>
</asp:UpdatePanel>
员工等级:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace BlablaWebService
{
public class Employe
{
public int id { get; set; }
public string prenom { get; set; }
public string nom { get; set; }
public string imei { get; set; }
public string sexe { get; set; }
public string tel { get; set; }
public string comment { get; set; }
public Employe() { }
public Employe(int id, string prenom, string nom, string imei, string sexe, string tel, string comment)
{
this.id = id;
this.prenom = prenom;
this.nom = nom;
this.imei = imei;
this.sexe = sexe;
this.tel = tel;
this.comment = comment;
}
}
}
编辑
感谢 Pól O' Muilleoir,这是我最后的工作代码:
using (SqlDataReader reader = querySaveStaff.ExecuteReader())
{
if (reader.Read())
{
e.id = reader.GetInt32(reader.GetOrdinal("id"));
e.prenom = reader.IsDBNull(reader.GetOrdinal("prenom")) ? string.Empty : reader.GetString(reader.GetOrdinal("prenom"));
e.nom = reader.IsDBNull(reader.GetOrdinal("nom")) ? string.Empty : reader.GetString(reader.GetOrdinal("nom"));
e.imei = reader.IsDBNull(reader.GetOrdinal("phone_IMEI")) ? string.Empty : reader.GetString(reader.GetOrdinal("phone_IMEI"));
e.sexe = reader.IsDBNull(reader.GetOrdinal("sexe")) ? string.Empty : reader.GetString(reader.GetOrdinal("sexe"));
e.tel = reader.IsDBNull(reader.GetOrdinal("tel")) ? string.Empty : reader.GetString(reader.GetOrdinal("tel"));
e.comment = reader.IsDBNull(reader.GetOrdinal("comment")) ? string.Empty : reader.GetString(reader.GetOrdinal("comment"));
}
}
【问题讨论】:
-
尝试使用
(string)reader["sexe"];而不是reader.GetString(reader.GetOrdinal("sexe"));。和reader.Close();读者阅读完毕后。 -
@AlexKudryashev 没有任何改变。
-
请出示你的
Employe班级。 -
你做一些转换吗?在 DB 图片上是
male,在模态图片上是M^ale。 (对不起我的法语) -
@AlexKudryashev 重要的是选项的价值,所以价值是男性和女性
标签: c# asp.net sql-server