Я использую MVC-5 с angularjs У меня есть класс DBFunction.cs, в котором у меня есть метод, какDataReader, связанный с этой командой должен быть закрыт первой
public SqlDataReader ExecuteSP_Reader(string ProcedureName, SqlCommand MyCommand)
{
if (con.State == ConnectionState.Closed)
con.Open();
MyCommand.CommandType = CommandType.StoredProcedure;
MyCommand.CommandText = ProcedureName;
//MyCommand.Connection = (SqlConnection)HttpContext.Current.Application["con"];
MyCommand.Connection = con;
SqlDataReader _Reader = MyCommand.ExecuteReader();
//con.Close();
return _Reader;
}
и другой класс называется задача
я выборка данных из базы данных из метода класса
public List<object>getdatabyuser(string UserAutoId=null)
{
cmd = new SqlCommand();
List<object> getdatauser = new List<object>();
if(!string.IsNullOrEmpty(UserAutoId))
cmd.Parameters.AddWithValue("@userautoid", UserAutoId);
SqlDataReader dr;
dr = dbf.ExecuteSP_Reader("TMS_GETTASKBYUSERNAME", cmd);
while(dr.Read())
{
getdatauser.Add(new
{
TaskName=dr["TaskName"].ToString(),
ParentAutoID=dr["ParentAutoID"].ToString(),
UserAutoId = dr["UserAutoId"].ToString(),
AssignBy=dr["AssignBy"].ToString(),
AssignTo=dr["AssignTo"].ToString()
});
}
dr.Close();
return getdatauser;
}
и есть еще один слой в этом, я использовал WebService под названием dashboard.asmx
[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public void gettaskbyuser(string UserAutoId)
{
var json = "";
json = js.Serialize(objtask.getdatabyuser(UserAutoId));
Context.Response.Write(json);
}
здесь я уверен, преобразование данных в формат JSON передавать данные на мой контроллер angularjs
и вот мой контроллер
$http.get('/WebServices/dashboard.asmx/gettaskbyuser', {
params: {
UserAutoId: $scope.showparam.UserAutoId
}
}).then(function (response) {
$scope.getdatainmodal = response.data;
})
данные будут отображаться на кнопке мыши,
у меня есть таблица
Azhar 4
Das 1
Minesh 1
<td><a href="#" ng-click="showmodal(x)" data-toggle="modal" data-target="#myModal">{{ x.TaskCount }}</a></td>
есть тег в моем столе, и когда пользователь нажимает, что модальный всплывает с данными
<table class="table table-bordered table-responsive">
<tr class="bg-primary">
<td><center><span class="glyphicon glyphicon-edit"></span></center></td>
<td>TaskName</td>
<td>User Name</td>
<td>AssignBy</td>
<td>AssignTo</td>
<td ng-hide="true">Parent Id</td>
</tr>
<tr ng-repeat="x in getdatainmodal">
<td><center><a href="#" class="btn btn-success">Edit</a></center></td>
<td>{{x.TaskName}}</td>
<td>{{x.UserAutoId}}</td>
<td>{{x.AssignBy}}</td>
<td>{{x.AssignTo}}</td>
<td ng-hide="true">{{x.ParentAutoID}}</td>
</tr>
</table>
, который отлично работает в первый раз, но когда пользователь нажимает кнопку снова во второй раз, для запись другого пользователя, она, показывающая исключения
Возможно необработанного отказ: { «данных»: "System.InvalidOperationException: Существует уже открытая DataReader, связанные с этой командой, которая должна быть закрыта первым.
что не так в этом коде?
Вы установили значение MultipleActiveResultSets = True? – nabuchodonossor
Я не знаю, что это? –
Возможный дубликат исключения ["уже открытый DataReader" с вложенным SqlDataReader в ASP.NET] (http://stackoverflow.com/questions/10854267/already-an-open-datareader-exception-with-nested-sqldatareader-in -Asp-нетто) – nabuchodonossor