Ну, это можно сделать с помощью CollapsingToolbarLayout.
Спецификация материала: https://material.io/develop/android/components/collapsing-toolbar-layout/
Вы когда-либо добавляете параметры к набору Параметра SqlCommand? Вы упомянули, что те, которые не работают, являются теми, которые берут входные параметрические усилители, все же в Вашем коде, у Вас нет ничего как это:
cmdPopulateFilterDropDowns.Parameters.AddWithValue(...);
Глупая ошибка с моей стороны. После нескольких часов truggling с этим я понял, что хранимые процедуры, которые я использовал, возвращают несколько наборов результатов, от которых первый набор результатов был всегда пуст. Следовательно отсутствие результатов.
Выполните трассировку SQL-сервера против сервера, Вы думаете, что выполняете свою команду против. Что на самом деле отправляется на сервер? Я думаю, что Вы найдете свою подсказку дымящегося оружия там.
BFree имеет положительную сторону, чтобы проверить, что AddWtihValue () по сравнению с Добавляют (). Также удостоверьтесь, что при явном инстанцировании объектов SqlParameter, та же проблема, Вы будете иметь с.Add (), может произойти. Обратите внимание, что существует жгут из прутьев недостатка дизайна Параметры. Добавьте () при передаче значений (интервала) 0 в него - они взяты в качестве перечисления вместо значения...
это может казаться очевидным, но скажите мне о вызове.Read () методом? Я очень не хочу поставить такой вопрос, но иногда это - самые очевидные вещи, которые мы забываем, когда мы сводим нас с ума по проблеме.
Когда Вы добираетесь, "IEnumerable не возвратил результатов" ошибка? Вы могли показать пример того, как Вы получаете доступ к DataReader?
Что происходит, если Вы устанавливаете точку останова перед возвратом, и выполненный
rdrFilterSearch.GetString(0);
в непосредственном окне?
Установка направления параметра в sqlParam должна решить проблему.
mySqlParam.Direction = ParameterDirection.ReturnValue;
Если вы ожидаете, что будет возвращено более одного значения, просто добавьте параметр и установите его направление:
SqlParameter mySqlParam = new SqlParameter();
mySqlParam.ParameterName = "@ID";
mySqlParam.SqlDbType = SqlDbType.int;
mySqlParam.Direction = ParameterDirection.ReturnValue;
SqlParameter mySqlParam = new SqlParameter();
mySqlParam.ParameterName = "@Name";
mySqlParam.SqlDbType = SqlDbType.NVarChar;
mySqlParam.Direction = ParameterDirection.ReturnValue;
SqlParameter mySqlParam = new SqlParameter();
mySqlParam.ParameterName = "@Address";
mySqlParam.SqlDbType = SqlDbType.NVarChar;
mySqlParam.Direction = ParameterDirection.ReturnValue;
mySqlParam.ParameterName
не обязательно должно в точности совпадать с именем в хранимой процедуре.
Затем вы можете прочитать значения следующим образом (не полный пример):
int.Parse(dataReader["ID"]);
dataReader["name"].ToString();
dataReader["address"].ToString();
значение в ] dataReader [""]. ToString ();
должен соответствовать имени столбца из хранимой процедуры.
У меня была похожая, но не идентичная проблема, которая сводила меня с ума, поэтому я добавлю ее на случай, если это поможет кому-то в очереди.
Я мог запустить SQL или вызвать хранимую процедуру с тем же SQL на SQL Server с помощью Management Studio и получить обратно заполненный набор результатов. Но когда я использовал идентичный встроенный SQL или вызвал содержащий его sproc из моего кода Visual Studio для проекта веб-приложения ASP.Net, я получил пустой DataReader.
Как тот же идентичный SQL может вернуть набор результатов в Management Studio, но пустой DataReader в Visual Studio? Ответ заключался в том, что я работал как другой пользователь с разными разрешениями в двух инструментах. В Management Studio я работал разработчиком с определенной ролью SQL с множеством разрешений. Но в Visual Studio я работал как учетная запись службы, которой не были предоставлены разрешения на запрашиваемые мной таблицы.
На самом деле моя проблема была на шаг сложнее. Все было хорошо, пока я не изменил SQL / sproc и не добавил таблицу JOIN к еще одной таблице, и в этой таблице не было необходимых разрешений для учетной записи службы. Но принцип тот же: проверьте все разрешения для пользователя, выполняющего вызов базы данных.