0
同じ行のほかの値に基づいてGridView内のテキストボックスを無効にしようとしていますが、enableプロパティを設定しようとするとnull参照例外が発生します。例外を与えるグリッドビュー内のテキストボックスの値にアクセスしよう
以下は私のASPXコードです:
<asp:GridView ID="gvPRCertInfo" runat="server" AutoGenerateColumns="False" GridLines="None"
CellSpacing="1" CellPadding="1"
Width="100%" BorderWidth="0"
AllowSorting="True"
PageSize="30"
OnRowDataBound="gvPRCertInfo_RowDataBound"
CssClass="data responsive">
<Columns>
<asp:TemplateField HeaderText="Select" SortExpression="">
<ItemTemplate>
<asp:CheckBox ID="chkCert" runat="server" /><input type="hidden" id="hdnCertId" runat="server" value='<%# DataBinder.Eval(Container.DataItem, "CertId") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="CertificateID" HeaderText="Certificate ID" />
<asp:TemplateField HeaderText="OrderQuantity">
<EditItemTemplate>
<asp:TextBox ID="txtOrderQty" runat="server"
Text='<%# Bind("OrderQty") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="AvailableQuantity">
<EditItemTemplate>
<asp:TextBox ID="txtAvaiableQty" runat="server"
Text='<%# Bind("AvailableQty") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="RedeemQuantity">
<EditItemTemplate>
<asp:TextBox ID="txtRedeemQty" runat="server"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Specification" HeaderText="specification" Visible ="false" />
<asp:BoundField DataField="ActCertId" HeaderText="ActivatedCerts" Visible ="false" />
</Columns>
<EmptyDataRowStyle CssClass="AlternatingRowStyle" />
<HeaderStyle CssClass="HeaderStyle" HorizontalAlign="Center" />
<PagerSettings Visible="False" />
</asp:GridView>
そして、これは私のaspx.csコードです:
protected void gvPRCertInfo_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
string specifications = Convert.ToString(e.Row.Cells[5].Text);
if(string.IsNullOrEmpty(specifications))
{
TextBox txtOrderQty = e.Row.FindControl("txtOrderQty") as TextBox;
TextBox txtAvailableQty = e.Row.FindControl("txtAvaiableQty") as TextBox;
TextBox txtRedeemQty = e.Row.FindControl("txtRedeemQty") as TextBox;
txtOrderQty.Enabled = false; // getting error at here
txtAvailableQty.Enabled = false;
txtRedeemQty.Enabled = false;
}
string ActCertId = Convert.ToString(e.Row.Cells[6].Text);
if(string.IsNullOrEmpty(ActCertId))
{
CheckBox chkCert = (CheckBox)e.Row.FindControl("chkCert");
chkCert.Enabled = false;
}
}
}
私はこのコードで間違ってやっているところ、私はわかりません。
私はこの質問に対して助けてください、非常に感謝しますか?