这是非常基本的东西,但我无法从gridview中的单元格中提取文本。
<asp:TemplateField HeaderText="Rolle" SortExpression="role">
<ItemTemplate>
<asp:Label ID="roleLabel" runat="server" Text='<%# Eval("role") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList style="width: 200px;" ID="roleDropdown" runat="server" DataSourceID="SqlDataSourceDropDownlist" DataTextField="role" DataValueField="roleID"></asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
Protected Sub GridView1_rowediting(sender As Object, e As GridViewEditEventArgs) Handles GridView1.RowEditing
Dim tb As Label
tb = CType(GridView1.SelectedRow.Cells(1).FindControl("roleLabel"), Label)
Dim userRoleString As String = tb.Text
End Sub
我收到了这个错误:
Object reference not set to an instance of an object.
如何从GridView中的单元格中提取文本?
答案 0 :(得分:1)
您很可能需要首先找到您想要的控件然后抓取文本,如下所示:
Dim tb as TextBox
tb = CType(GridView1.SelectedRow.Cells(1).FindControl("ID_Of_Some_textbox"), TextBox)
Dim userRoleString As String = tb.Text
编辑:添加了示例代码
基本理念:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="user_id"
DataSourceID="SqlDataSource1">
<Columns>
<asp:CommandField ShowSelectButton="True" />
<asp:TemplateField HeaderText="user_name" SortExpression="user_name">
<EditItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlDataSource2" DataTextField="user_name"
DataValueField="user_name" SelectedValue='<%# Bind("user_name") %>' >
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("user_name") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
答案 1 :(得分:0)
在RowDataBound中执行类似的操作
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
int index = 0;
if (e.Row.RowType == DataControlRowType.DataRow &&
(e.Row.RowState & DataControlRowState.Edit) == DataControlRowState.Edit)
{
// Here you will get the Control you need like:
DropDownList dl = (DropDownList)e.Row.FindControl("ddlDriverID1");
foreach (ListItem li in dl.Items)
{
if (li.Text == ((System.Data.DataRowView)(e.Row.DataItem)).Row.ItemArray[19].ToString())
{
dl.SelectedIndex = index;
break;
}
index += 1;
}
}
}