VB.NET TO C# - код Gridview для поиска из списка в хранимой процедуре
Я ищу правильный код синтаксиса в C# для отображения результатов поиска из нескольких параметров в Gridview. Я только что сделал нечто подобное в VB.NET, но я должен обновить проект в C#.NET и не уверен в:
1) правильный код за синтаксисом в C#.NET (код в VB.NET)
2) как указать несколько параметров поиска в случае, если пользователь выбирает несколько параметров плана страхования, несколько параметров возраста и / или M из списка
3) отключить или включить возможность выбора нескольких параметров в списке. (Для полей State и Zip List я бы хотел отключить выбор нескольких параметров, а для Plan, Age и Carrier я бы хотел выбрать несколько параметров.
Вот что у меня есть на сервере в VB.NET, который должен быть в C#.NET:
Protected Sub SearchButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles SearchButton.Click
With Me.SqlDataSource1
.SelectParameters.Clear()
.ConnectionString = ConfigurationManager.AppSettings("PriceFinderConnectionString").ToString
.SelectCommand = "up_SelectPriceFinderResults" //calling stored procedure
.SelectParameters.Add("state_code", Me.lastname.Text)
.SelectParameters.Add("zip_code", Me.city.Text)
.SelectParameters.Add("plan_name", Me.state.Text)
.SelectParameters.Add("age", Me.state.Text)
.SelectParameters.Add("carrier_name", Me.donotmail.Text)
.SelectParameters(0).ConvertEmptyStringToNull = True
.SelectParameters(1).ConvertEmptyStringToNull = True
.SelectParameters(2).ConvertEmptyStringToNull = True
.SelectParameters(3).ConvertEmptyStringToNull = True
.SelectParameters(4).ConvertEmptyStringToNull = True
.SelectCommandType = SqlDataSourceCommandType.StoredProcedure
.CancelSelectOnNullParameter = False
End With
GridView2.DataBind()
End Sub
Вот код для хранимой процедуры:
PROCEDURE [dbo].[up_SelectPriceFinderResults]
-- Add the parameters for the stored procedure here
@state_code varchar(20)= NULL,
@zip_code varchar(20)= NULL,
@plan_code varchar(2)= NULL,
@insur_age varchar(2)= NULL,
@carrier_name varchar(20)= NULL,
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
IF len(@state_code)=0
BEGIN SET @state_code=NULL
END
IF len(@zip_code)=0
BEGIN SET @zip_code=NULL
END
IF len(@plan_name)=0
BEGIN SET @plan_code=NULL
END
IF len(@insur_age)=0
BEGIN SET @age=NULL
END
IF len(@carrier_name)=0
BEGIN SET @carrier_name=NULL
END
SELECT [state_code],
[zip_code],
[plan_code],
[carrier_name],
[insur_age],
[female_value],
[male_value]
CASE WHEN [female_value] is NULL OR 0
THEN 'N/A'
END AS 'female_value',
CASE WHEN [male_value] is NULL OR 0
THEN 'N/A'
END AS 'male_value',
FROM
[state_zipcode_plans]
WHERE
(([state_code] = @state_code OR @state_code IS NULL)
AND ([zip_code] = @zip_code OR @zip_code IS NULL)
AND ([plan_name] = @plan_name OR @plan_name IS NULL)
AND ([insur_age] = @insur_age OR @insur_age IS NULL)
AND ([carrier_name] = @carrier_name OR @carrier_name IS NULL))
ORDER BY
[plan_code], [female_value], [male_value]
END
2 ответа
1) Есть несколько способов подойти к этому:
Бесплатные инструменты доступны онлайн:
http://www.developerfusion.com/tools/convert/vb-to-csharp/
Изучите синтаксис C#.
Это не сложно, и очень удобно иметь возможность читать C#, даже если вы в основном работаете на VB.net, потому что многие примеры кода, доступные в Интернете, находятся на C#.
2) Это сложно сделать с подходом к процедуре хранения, который у вас есть. Вам нужно будет либо просто создать динамический SQL (используя параметры связывания, где это возможно), либо создать хранимую процедуру proc и выполнить dyanmic sql.
3) Это просто: просто установите свойство SelectionMode в ListBoxs соответственно.
Используя инструмент конвертера, вот код, который я пришел с C#:
protected void SearchButton_Click(object sender, EventArgs e)
{
var _with1 = this.SqlDataSource1;
_with1.SelectParameters.Clear();
_with1.ConnectionString = ConfigurationManager.AppSettings("AgentLeadsConnectionString").ToString;
_with1.SelectCommand = "up_SelectMktDataLeads";
_with1.SelectParameters.Add("state_code", this.state_code.Text);
_with1.SelectParameters.Add("zip_code", this.zip_code.Text);
_with1.SelectParameters.Add("plan_name", this.plan_name.Text);
_with1.SelectParameters.Add("age", this.age.Text);
_with1.SelectParameters.Add("carrier_name", this.carrier_name.Text);
_with1.SelectParameters(0).ConvertEmptyStringToNull = true;
_with1.SelectParameters(1).ConvertEmptyStringToNull = true;
_with1.SelectParameters(2).ConvertEmptyStringToNull = true;
_with1.SelectParameters(3).ConvertEmptyStringToNull = true;
_with1.SelectParameters(4).ConvertEmptyStringToNull = true;
_with1.SelectCommandType = SqlDataSourceCommandType.StoredProcedure;
_with1.CancelSelectOnNullParameter = false;
GridView2.DataBind();
}