Мне дали фрагмент кода ниже для добавления параметров вставки, которые принадлежат методу вставки моего объекта ObjectDataSource.В нижнем колонтитуле сетки находится кнопка вставки \ ссылка, которая основана на методе вставки ObjectDataSource.
В приведенном ниже методе DefaultValue является строковым типом.
В примере, показанном мне по ссылке, все параметры имеют строковый тип.Что бы вы сделали, если бы параметр не был строковым типом?Вот ссылка, если вас интересует: http://csharp -video-tutorials.blogspot.com / 2013/03 / gridview-insert-update-delete-in-aspnet_13.html
protected void lbInsert_Click(object sender, EventArgs e)
{
ObjectDataSource1.InsertParameters["Name"].DefaultValue =
((TextBox)GridView1.FooterRow.FindControl("txtName")).Text;
ObjectDataSource1.InsertParameters["Gender"].DefaultValue =
((DropDownList)GridView1.FooterRow.FindControl("ddlInsertGender")).SelectedValue;
ObjectDataSource1.InsertParameters["City"].DefaultValue =
((TextBox)GridView1.FooterRow.FindControl("txtCity")).Text;
ObjectDataSource1.Insert();
}
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
DeleteMethod="DeleteEmployee" InsertMethod="InsertEmployee"
SelectMethod="GetAllEmployees" TypeName="Demo.EmployeeDataAccessLayer"
UpdateMethod="UpdateEmployee">
<DeleteParameters>
<asp:Parameter Name="EmployeeId" Type="Int32" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="Name" Type="String" />
<asp:Parameter Name="Gender" Type="String" />
<asp:Parameter Name="City" Type="String" />
</InsertParameters>
<UpdateParameters>
....
</UpdateParameters>
</asp:ObjectDataSource>
// Insert Method for ObjectDataSource control
public static int InsertEmployee(string Name, string Gender, string City)
{
string CS = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
using (SqlConnection con = new SqlConnection(CS))
{
string updateQuery = "Insert into tblEmployee (Name, Gender, City)" +
" values (@Name, @Gender, @City)";
SqlCommand cmd = new SqlCommand(updateQuery, con);
SqlParameter paramName = new SqlParameter("@Name", Name);
cmd.Parameters.Add(paramName);
SqlParameter paramGender = new SqlParameter("@Gender", Gender);
cmd.Parameters.Add(paramGender);
SqlParameter paramCity = new SqlParameter("@City", City);
cmd.Parameters.Add(paramCity);
con.Open();
return cmd.ExecuteNonQuery();
}
В моем случае у меня нет строкового параметра.поэтому я не знаю, как закодировать мой щелчок кнопки вставки, который находится в нижнем колонтитуле сетки.Мой сценарий:
<asp:ObjectDataSource ID="ObjectDataSource2" runat="server" SelectMethod="GetAllProducts" TypeName="VenketGrid.DataAccessLayer2" UpdateMethod="UpdateProduct" ConflictDetection = "CompareAllValues" OldValuesParameterFormatString = "Original_{0}" DeleteMethod="Delete" OnSelecting="ObjectDataSource2_Selecting" OnUpdated="ObjectDataSource2_Updated" InsertMethod="InsertProduct">
<DeleteParameters>
...
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="Inactive" Type="Boolean" />
<asp:Parameter Name="CategoryId" Type="Int32" />
<asp:Parameter Name="Description" Type="String" />
<asp:Parameter Name="CurrentPrice" Type="Decimal" />
<asp:Parameter Name="Modified" Type="DateTime" />
</InsertParameters>
<UpdateParameters>
...
</UpdateParameters>
</asp:ObjectDataSource>
// Insert Method for ObjectDataSource control
public static int InsertProduct(bool Inactive, int CategoryId, string Description, Decimal CurrentPrice, DateTime Modified)
{
string ConnectionString;
ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DBConn"].ToString();
SqlConnection con = new SqlConnection(ConnectionString);
SqlCommand cmd = new SqlCommand("_SP_Insert_RefProducts", con);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@Inactive", Inactive));
cmd.Parameters.Add(new SqlParameter("@CategoryId", CategoryId));
cmd.Parameters.Add(new SqlParameter("@Description", Description));
cmd.Parameters.Add(new SqlParameter("@CurrentPrice", CurrentPrice));
con.Open();
int affected;
affected = cmd.ExecuteNonQuery();
con.Close();
return affected;
}