如何在gridview中选择多个复选框并将这些复选框存储到数据库中
问题描述:
如何选择gridview中的多个复选框并将选中的复选框值存储到数据库...
我的设计页面为:
How to select multiple checkbox in gridview and stored those selected checkbox value into databse...
my design page is:
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
Height="298px" Width="593px"
onselectedindexchanged="GridView1_SelectedIndexChanged"
onrowdatabound="GridView1_RowDataBound">
<Columns>
<asp:BoundField HeaderText="ID" DataField="ID" />
<asp:BoundField HeaderText="Product Name" DataField="ProductName" />
<asp:BoundField HeaderText="Price" DataField="price" />
<asp:BoundField HeaderText="Category" DataField="category" />
<asp:TemplateField HeaderText="Product">
<ItemTemplate>
<asp:Image width="40" Height="40" ImageUrl='<%#Eval("path")%>' runat ="server" ID="image1" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Select">
<ItemTemplate>
<asp:CheckBox ID="chkSelect" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</asp:Content>
我的c#编码是:
my c# coding is:
protected void Button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < GridView1.Rows.Count; i++)
{
CheckBox cb =(CheckBox)GridView1.Rows[i].Cells[0].FindControl("chkSelect");//Gets the
if (cb.Checked == true)
{
// how to get those select values and how store those values in database
}
else
{ //Do something here when CheckBox is UnChecked }
}
}
}
答
将您选择的复选框值存储在字符串中: -
我使用的是Telerik RadGrid,你可以通过GridView修改它。
Store your selected checkbox value in string:-
I am using Telerik RadGrid, you can modify it by your GridView.
string strMappedUser = "";
foreach (GridDataItem gdt in gridUsers.MasterTableView.Items)
{
CheckBox chb = (CheckBox)gdt.FindControl("cbSelectUser");
if (chb.Checked == true)
{
if (strMappedUser == "")
strMappedUser = Convert.ToString(gdt.GetDataKeyValue("UserId"));
else
strMappedUser = strMappedUser + "," + Convert.ToString(gdt.GetDataKeyValue("UserId"));
}
}
现在数据库使用此: -
Now in Database Use this :-
CREATE PROCEDURE Sp_Example (
@aintUserId VARCHAR(500) = ''
)
AS
BEGIN
CREATE TABLE #tempTable (
Id INT
,UsID VARCHAR(50)
)
INSERT INTO #tempTable (
id
,UsID
)
SELECT Row AS ID
,Value AS SetValue
FROM dbo.fn_SplitForOrdering(@aintUserId, ',')
INSERT INTO t_YourTable (UserId)
SELECT UsID
FROM #tempTable
DROP TABLE #tempTable
END
这里是用于从分隔字符串返回varchar行集的函数
here is the function used for returning a varchar rowset from a delimited string
CREATE FUNCTION dbo.fn_SplitForOrdering (
@InputText VARCHAR(4000)
,@Delimiter VARCHAR(10)
)
RETURNS @Array TABLE (
Row INT
,Value VARCHAR(4000)
)
AS
-----------------------------------------------------------
-- returns a varchar rowset from a delimited string --
-----------------------------------------------------------
BEGIN
DECLARE @Pos INT
DECLARE @End INT
DECLARE @TextLength INT
DECLARE @DelimLength INT
DECLARE @Row INT
SET @TextLength = DataLength(@InputText)
-- Exit function if no text is passed in
IF @TextLength = 0
RETURN
SET @Pos = 1
SET @DelimLength = DataLength(@Delimiter)
SET @Row = 1
IF @DelimLength = 0
BEGIN
WHILE @Pos <= @TextLength
BEGIN
INSERT @Array (
Row
,Value
)
VALUES (
@Row
,SubString(@InputText, @Pos, 1)
)
SET @Pos = @Pos + 1
SET @Row = @Row + 1
END
END
ELSE
BEGIN
SET @InputText = @InputText + @Delimiter
SET @End = CharIndex(@Delimiter, @InputText)
WHILE @End > 0
BEGIN
INSERT @Array (
Row
,Value
)
VALUES (
@Row
,SubString(@InputText, @Pos, @End - @Pos)
)
SET @Pos = @End + @DelimLength
SET @End = CharIndex(@Delimiter, @InputText, @Pos)
SET @Row = @Row + 1
END
END
RETURN
END
希望你能得到它。
祝你好运。
Hope you will get it.
Good luck.